相关疑难解决方法(0)

实体框架,更新相关对象的问题

我目前正在使用最新版本的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)

c# entity-framework ef-code-first

57
推荐指数
1
解决办法
6万
查看次数

标签 统计

c# ×1

ef-code-first ×1

entity-framework ×1