2011-09-08 19 views
6

Decir que tengo una tabla que tiene este aspecto:Longitud de datos con Entity Framework (para validar longitudes de datos en un servicio 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) 

Y me llene esta tabla con un servicio WCF (jabón). Mi contrato de datos se parece a esto:

[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; } 
} 

El contrato tiene String para todos estos campos. A string can be a max of about 1,073,741,823 chars. Eso está muy por encima de los límites que la base de datos permitirá. Cuando un cliente envía datos, pueden incluir valores muy largos en mi contrato.

Me gustaría saberlo antes de intentar (y suspender) una inserción.

Tengo un marco de validación hecho en casa muy agradable que enviará una falla al cliente. Y podría ir y poner una validación para cada artículo. Pero si codifico las longitudes de los campos, entonces veo que se sale de control muy rápido. (Si la longitud de una columna tiene que cambiarse en dos puntos, entonces estoy abriendo el camino a los errores cuando solo uno u otro cambian).

¿Hay alguna manera (con el marco de la entidad) de obtener el longitudes de un elemento de datos? Entonces, ¿puedo validarlo antes de tratar de persistir?

¿O hay otra forma de hacer esta validación (excepto con solo fallar el inserto).

Respuesta

Cuestiones relacionadas