【发布时间】:2013-11-14 17:17:12
【问题描述】:
我正在使用延迟加载将我的 EF6 MVC 项目从 ObjectContext 迁移到 DbContext。
使用 ObjectContext,我可以做到以下几点:
// Create a new user:
User u = new User();
u.LineManagerID = 42; // Set foreign key
db.Users.Add(u);
db.SaveChanges();
// get property of related entity as set above by foreign key
User lm = u.LineManager;
使用 DbContext,u.LineManager 为 null,即使新实体已正确保存,我怀疑如果我再次调用数据库会很好。
延迟加载和动态代理均已启用。
为什么新实体没有正确刷新?
请帮忙!我可以看到这次迁移比我想象的要困难得多......!
EDIT - 我应该补充一点,我正在使用 db-first 代码生成
【问题讨论】:
-
我认为您必须更改为 db.Users.Attached(user);那么你必须告诉它你正在更新一些东西。类似于 db.Users.Attached(user); db.Entry(user).State = EntityState.Modified;另外,我不相信你必须手动告诉它要更新哪个 id。只要您对您的观点有提及该经理。例如,如果您有类似 @html.EditorFor(model => model.Manager.Name) 的东西来捕获经理名称,它应该更新正确的列。希望我说得通。
标签: c# asp.net-mvc entity-framework dbcontext objectcontext