C# 使用实体框架获取数据长度(验证WCF服务上的数据长度)
假设我有一张这样的桌子:C# 使用实体框架获取数据长度(验证WCF服务上的数据长度),c#,wcf,entity-framework,C#,Wcf,Entity Framework,假设我有一张这样的桌子: 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
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)
[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; }
}
我用一个WCF(Soap)服务填充这个表。我的数据合同如下所示:
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)
[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; }
}
对于所有这些字段,合同都有字符串
。A.这远远超出了数据库允许的限制。当客户发送数据时,他们可以在我的合同中输入很长的值
我想在尝试(并且失败)插入之前找出这一点
我有一个非常好的内部制作的验证框架,可以将故障发送给客户。我可以去为每一个项目进行验证。但是如果我硬编码字段的长度,那么我会看到它很快失控。(如果一个列的长度必须在两个点上更改,那么当只有一个或另一个被更改时,我就为bug开辟了道路。)
是否有一种方法(使用实体框架)来获取数据项的长度?所以我可以在尝试持久化之前验证它
或者是否有其他方法进行此验证(插入失败除外)。您可以使用MetadataWorkspace并处理ObjectContext上的SavingChanges事件