【问题标题】:Way to organize database changes tracking in c# code在 C# 代码中组织数据库更改跟踪的方法
【发布时间】:2013-02-13 17:24:10
【问题描述】:

我正在开发电子商务系统,目前我在做Product类,它作为很多实体的容器,例如照片,产品参数(名称值集合)等。我知道这里的一切都应该是存储在数据库中(ms sql)。

所以这样的用例会很受欢迎: 1)客户打开一些产品进行编辑 2) 客户添加了几张新照片 3) 客户更改产品的一些参数 4) 客户点击保存按钮。

所以问题是跟踪所做更改的最佳方式是什么?我可以通过比较要保存的类中的数据和刚从 db 加载的同一个类中的数据,在存储库类中计算它们,但这似乎有点难看。

我也认为用这个跟踪代码污染产品类不是个好主意。

【问题讨论】:

标签: c# database architecture


【解决方案1】:

【讨论】:

  • 目前我没有对系统的其余部分使用任何 ORM。因此所有存储库都直接与 SqlCommand、SqlReader 一起使用。开始使用带有新类的 EF 并在未来慢慢将所有存储库迁移到它是多么痛苦?
  • 幸运的是,迁移到 EF 非常容易。我推荐“数据库优先”的方法。使您现有的模型类部分,以便您保留您在其中添加的逻辑。看看这些。 msdn.microsoft.com/en-us/data/jj591506blogs.msdn.com/b/adonet/archive/2010/01/25/…
  • 我实际上推荐代码优先的方法。特别是对于一个新项目。代码比数据库更容易更改。另外,我假设您对代码的版本控制比架构更好。
  • @Aron 使用数据库优先或代码优先方法是个人偏好,关于它们有很多争论。在这种情况下,我推荐使用数据库优先方法,因为大多数在没有 ORM 的情况下构建系统经验的开发人员至少在习惯 EF 之前更愿意使用数据库优先方法。此外,架构不应该经常更改。
【解决方案2】:

你描述UnitOfWork pattern
EntitiFramework (example) 和 NHibernate (example)。

【讨论】:

  • 目前我没有对系统的其余部分使用任何 ORM。因此所有存储库都直接与 SqlCommand、SqlReader 一起使用。开始使用带有新类的 EF 并在未来慢慢将所有存储库迁移到它是多么痛苦?
  • 答案将取决于您的背景。如果您不熟悉任何 orm,那么它可能会相当痛苦。如果你熟悉一些 orm,你可以尝试使用它。否则你可能会看 EF,它的记录比 NH 好一点。
猜你喜欢
  • 2018-07-07
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
  • 2011-08-15
  • 1970-01-01
  • 2011-09-30
  • 2021-05-16
  • 2016-05-10
相关资源
最近更新 更多