2011-09-08 41 views
6

Nói rằng tôi có một bảng trông như thế này:Nhận Chiều dài dữ liệu với Entity Framework (để xác nhận độ dài dữ liệu trên một dịch vụ WCF)

create table #Employee (
    EmployeeId int identity(1,1) not null, 
    FirstName varchar(100) not null, 
    LastName varchar(100) not null, 
    Suffix varchar(10) not null, 
    Prefix varchar(10) not null, 
    Address varchar(500) null) 

Và tôi điền vào bảng này với một dịch vụ WCF (xà phòng). Hợp đồng dữ liệu của tôi trông giống như sau:

[DataContract] 
public class Employee 
{ 
    [DataMember] 
    public virtual string FirstName { get; set; } 
    [DataMember] 
    public virtual string LastName { get; set; } 
    [DataMember] 
    public virtual string Suffix { get; set; } 
    [DataMember] 
    public virtual string Prefix { get; set; } 
    [DataMember] 
    public virtual string Address { get; set; } 
} 

Hợp đồng có String cho tất cả các trường này. A string can be a max of about 1,073,741,823 chars. Điều đó vượt quá giới hạn mà cơ sở dữ liệu sẽ cho phép. Khi khách hàng gửi dữ liệu, họ có thể đặt các giá trị thực sự dài vào hợp đồng của tôi.

Tôi muốn tìm điều này trước khi tôi cố gắng (và không thành công) chèn.

Tôi có một khung công tác xác thực được thực hiện rất tốt đẹp sẽ gửi lỗi cho khách hàng. Và tôi có thể đi và đưa vào một xác nhận cho mỗi mục. Nhưng nếu tôi hardcode độ dài của các lĩnh vực sau đó tôi thấy nó xoắn ngoài tầm kiểm soát rất rất nhanh. (Nếu chiều dài của cột phải được thay đổi theo hai điểm, thì tôi sẽ mở đường cho các lỗi khi chỉ có một hoặc một cái khác bị thay đổi.)

Có cách nào (với khung thực thể) để lấy độ dài của một mục dữ liệu? Vì vậy, tôi có thể xác nhận nó trước khi cố gắng để tồn tại nó?

Hoặc có cách nào khác để thực hiện việc xác thực này (ngoại trừ bằng cách không chèn chèn).

Trả lời

Các vấn đề liên quan