说我有一个看起来像这样的表:
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)
我用WCF(Soap)服务填充此表。我的数据合同如下:
[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; }
}
合同对所有这些字段都有String
。一个string can be a max of about 1,073,741,823 chars。这远远超出了数据库允许的限制。当客户发送数据时,他们可以在我的合同中加入非常长的值。
我想在尝试(并且失败)插入之前找到它。
我有一个非常好的内部验证框架,可以将故障发送到客户端。我可以去为每个项目进行验证。但是,如果我对字段的长度进行硬编码,那么我会看到它非常快速地失控。 (如果必须在两个位置更改列的长度,那么当只有一个或另一个发生更改时,我正在为错误开辟道路。)
是否有办法(使用实体框架)获取数据项的长度?所以我可以在尝试坚持之前验证它吗?
或者是否有其他方法可以进行此验证(除非插入失败)。
答案 0 :(得分:0)
您可以使用MetadataWorkspace并在ObjectContext上处理SavingChanges事件。