我目前正在使用最新版本的Entity Framework进行项目,我遇到了一个我似乎无法解决的问题.
在更新现有对象时,我可以相当容易地更新对象属性,直到它涉及到另一个类的引用的属性.
在下面的例子中,我有一个名为Foo的类,它存储各种属性,其中2个是其他类的实例
public class Foo
{
public int Id {get; set;}
public string Name {get; set;}
public SubFoo SubFoo {get; set}
public AnotherSubFoo AnotherSubFoo {get; set}
}
Run Code Online (Sandbox Code Playgroud)
当我使用下面的Edit()方法时,我传入了我想要更新的对象,我可以设法Name正确更新,但是我没有设法找到一种方法来更改SubFoo的属性.例如,如果SubFoo类具有属性Name,并且已更改并且在我的数据库与之间不同newFoo,则不会更新.
public Foo Edit(Foo newFoo)
{
var dbFoo = context.Foo
.Include(x => x.SubFoo)
.Include(x => x.AnotherSubFoo)
.Single(c => c.Id == newFoo.Id);
var entry = context.Entry<Foo>(dbFoo);
entry.OriginalValues.SetValues(dbFoo);
entry.CurrentValues.SetValues(newFoo);
context.SaveChanges();
return newFoo;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助或指针将不胜感激.
更新:根据Slauma的评论我修改了我的方法
public Foo Edit(Foo newFoo)
{
var dbFoo = …Run Code Online (Sandbox Code Playgroud)