Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体框架获取数据长度(验证WCF服务上的数据长度)_C#_Wcf_Entity Framework - Fatal编程技术网

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事件