【问题标题】:Entity Framework Save changes List<>实体框架保存更改列表<>
【发布时间】:2023-04-04 01:18:01
【问题描述】:

我刚开始使用 MVVM。这方面的话题也很多。 但我看不到树木的树木......

这是一个基本问题(初学者@EF和MVVM)

我的 ViewModel 中有一个 List&lt;Klanten&gt;。您应该能够编辑此列表。当列表被编辑时,我希望能够将更改保存到数据库中。

在我使用 MVVM 之前,我会做类似的事情:

_entities.SaveChanges();

但现在我的数据在列表中更改,而不是在上下文 self.我想知道我如何以正确的方式将我对列表的更改反映到数据库中。

我找到了一些答案,他们通过上下文检查列表中的每个对象,以检查是否有更改或添加。但我不喜欢那个解决方案,难道没有其他更好的方法吗?还是我应该坚持那个解决方案。

随时发布关于它的博客(或其他内容),我想了解更多信息。

谢谢,布莱希特

【问题讨论】:

  • 问题是:谁应该做变更跟踪? EF 上下文与否。在我们的项目中,EF 没有进行变更跟踪。所以我们必须在我们的服务中处理这个问题,并且只使用 EF 来加载和保存数据到数据库中

标签: c# wpf mvvm data-binding crud


【解决方案1】:

必须有人进行更改跟踪,对吗?实体不知道任何更改,直到您告诉它发生了哪些更改,因此您可以给它整个列表并让它添加/更新每一个,或者您可以按照那些“一些答案”的建议自己进行跟踪。恐怕真的没有神奇的方法来做到这一点:(

【讨论】:

    【解决方案2】:

    谢谢各位! 所以我想没有魔术:)

    我通过这样做解决了它:

        DataEntities ctx = new DataEntities();
        public List<Klant> Klanten
        {
            get { return ctx.Klanten.ToList(); }
        }
    
        public void AddKlant(Klant k)
        {
            ctx.Klanten.Add(k);
            ctx.SaveChanges();
            Refresh();
        }
    
        public void Refresh()
        {
            ViewSource.Source = Klanten;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多