首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >EF:使用延迟加载的必需属性时,更新时验证失败

EF:使用延迟加载的必需属性时,更新时验证失败
EN

Stack Overflow用户
提问于 2011-05-18 08:06:16
回答 2查看 15.2K关注 0票数 70

给定这个极其简单的模型:

public class MyContext : BaseContext
{
    public DbSet<Foo> Foos { get; set; }
    public DbSet<Bar> Bars { get; set; }
}

public class Foo
{
    public int Id { get; set; }
    public int Data { get; set; }
    [Required]
    public virtual Bar Bar { get; set; }
}

public class Bar
{
    public int Id { get; set; }
}

以下程序失败:

object id;
using (var context = new MyContext())
{
    var foo = new Foo { Bar = new Bar() };
    context.Foos.Add(foo);
    context.SaveChanges();
    id = foo.Id;
}
using (var context = new MyContext())
{
    var foo = context.Foos.Find(id);
    foo.Data = 2;
    context.SaveChanges(); //Crash here
}

使用DbEntityValidationException。在EntityValidationErrors中找到的消息是栏字段是必填项。

但是,如果我通过在SaveChanges之前添加以下行来强制加载Bar属性

var bar = foo.Bar;

一切都很好。如果我删除了[Required]属性,这也是有效的。

这真的是预期的行为吗?有没有什么变通的方法(除了每次我想要更新一个实体时加载每一个需要的引用)

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6038541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档