【问题标题】:Avoid Validating an Entity Attribute避免验证实体属性
【发布时间】:2012-06-15 08:11:29
【问题描述】:

这是我的实体类之一:

public class Customer
{
    public int Id { get; set; }
    [Required]
    public int CustomerNumber { get; set; }
    [Required]
    [StringLength(50)]
    public string Prename { get; set; }
    [StringLength(50)]
    public string Surname { get; set; }
    public DateTime? Birthday { get; set; }
    public bool Active { get; set; }
    [Column(TypeName = "image")]
    public byte[] Image { get; set; }
}

添加对象后,我使用以下行来保存我的更改:

((IObjectContextAdapter)context).ObjectContext.SaveChanges();

一切正常,我能够拯救客户..

现在我必须将其更改为以下内容:

context.SaveChanges();

我发现,我的上一行没有验证,只有第二行验证,因为它继承自 DbContext

现在我遇到了无法再保存客户的问题,原因是我在context.SaveChanges(); 线遇到了异常。

EntityValidationError我发现如下错误:ErrorMessage = "字段Image必须是字符串或数组类型,最大长度为'4000'。" 众所周知,我的问题是,我怎样才能避免仅验证这一实体..?我知道有可能避免验证整个实体,但这不是想法。我希望有人可以帮助我,我被困在这个..

【问题讨论】:

  • 一个字节数组,图像本身,没有路径..
  • @eMi 为什么要避免数据验证?如果您的数据库不接受该操作,因为表无法存储该值,那有什么意义?
  • 因为似乎sql-server-ce在数据库中保存图像有问题..看看这个问题:stackoverflow.com/questions/5737733/…问题是,我不想避免整个验证实体,就像那里描述的那样。

标签: c# entity-framework-4 save sql-server-ce entity


【解决方案1】:

您可以使用CustomValidationAttributeHere 就是一个例子。

你可以创建一个只返回成功的方法。

【讨论】:

    【解决方案2】:

    您还可以通过将上下文的 ValidateOnSaveEnabled 配置属性设置为 false 来禁用验证:

    Context.Configuration.ValidateOnSaveEnabled = false;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 2014-09-11
      • 1970-01-01
      • 2015-01-22
      相关资源
      最近更新 更多