我有一个Shop
模型,其中包含多个字段。其中一个是virtual User
个。每当我尝试编辑一个条目时,我都会收到错误消息,指出需要User
字段。
public class Shop
{
//..
public virtual ApplicationUser User { get; set; }
//..
}
我的解决方法是:
shop.User = shop.User; //re-set the value
shop.Active = true;
db.Entry(restaurant).State = EntityState.Modified;
db.SaveChanges();
我必须为所有领域做到这一点。这是标准方法还是有更好的方法?
答案 0 :(得分:0)
将您的模型更改为:
public class Shop
{
//..
public int UserId {get; set; }
public virtual ApplicationUser User { get; set; }
//..
}
实体框架将自动检测UserId
是对象User
的外键。您遇到此问题是因为User
是虚拟的(延迟加载)。在不访问或设置此属性的情况下更改模型时,EF认为它是空的(我假设)。外键UserId
不是虚拟的,将与模型Shop
的其他属性一起提取,因此您不必在保存模型时重新设置该值。
要设置新用户,您现在必须执行以下操作:
myShop.UserId = 1; // instead of setting myShop.User
有关详细信息,请参阅此文章:http://msdn.microsoft.com/en-us/data/jj713564.aspx