使用实体框架获取数据长度(以验证WCF服务上的数据长度)

时间:2011-09-08 17:21:48

标签: 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)

我用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。这远远超出了数据库允许的限制。当客户发送数据时,他们可以在我的合同中加入非常长的值。

我想在尝试(并且失败)插入之前找到它。

我有一个非常好的内部验证框架,可以将故障发送到客户端。我可以去为每个项目进行验证。但是,如果我对字段的长度进行硬编码,那么我会看到它非常快速地失控。 (如果必须在两个位置更改列的长度,那么当只有一个或另一个发生更改时,我正在为错误开辟道路。)

是否有办法(使用实体框架)获取数据项的长度?所以我可以在尝试坚持之前验证它吗?

或者是否有其他方法可以进行此验证(除非插入失败)。

1 个答案:

答案 0 :(得分:0)

您可以使用MetadataWorkspace并在ObjectContext上处理SavingChanges事件。

Field max length in Entity framework