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

Vac*_*ano 6 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)
Run Code Online (Sandbox Code Playgroud)

我用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; }
}
Run Code Online (Sandbox Code Playgroud)

合同String适用于所有这些领域.一个字符串最多可以是1,073,741,823个字符.这远远超出了数据库允许的限制.当客户发送数据时,他们可以在我的合同中放入非常长的值.

在尝试(和失败)插入之前,我想找到它.

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

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

或者是否有另一种方法来进行此验证(除了插入失败).

Jef*_*eff 0

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

实体框架中的字段最大长度