我们内部有一个简单的实用程序类用于数据库调用(围绕ADO.NET的轻量级包装),但我正在考虑为每个数据库/对象创建类。 这样做是否明智,或者只有在我们使用ASP.NET的完整MVC框架时才会受益?

所以我们有这个:

SQLWrapper.GetRecordset(connstr-alias, sql-statement, parameters);
SQLWrapper.GetDataset(connstr-alias, sql-statement, parameters);
SQLWrapper.Execute(connstr-alias, sql-statement, parameters);

考虑这样做:

Person p = Person.get(id);
p.fname = "jon";
p.lname = "smith";
p.Save();

或者换新纪录 -

Person p = new Person();
p.fname = "Jon";
p.lname = "Smith";
p.Save();
p.Delete();

这会很聪明,还是会有点矫枉过正? 我可以看到重用,更改数据库和维护/可读性的好处。

===============>>#1 票数:9 已采纳

这个问题是加载的,数据驱动设计与域驱动设计。 对于具有大量行为的任何应用程序,应首选域驱动设计。 报告或实用程序应用程序倾向于使用数据驱动设计更好地(或更快地开发)。

你问的是“我的公司应该如何设计我们的代码”。 作为一个领域狂热者,我的直觉反应是尖叫是的 但是,由于问题的简单性,我不确定您是否完全理解您提出的更改的范围。 我想你应该多谈谈你的团队。

获取一些文献,如埃文的DDD书籍,或免费的基金会电子书 ,然后你就可以更好地判断你应该去哪个方向。

===============>>#2 票数:2

您讨论的方法被许多人认为是一个很好的方法,包括我! 学习这种方法需要付出一些努力,但不要让它让你失望!

用LINQ to SQL尝试一个小项目怎么样? 也许在谷歌代码上找到一个很好的参考项目 ,并研究其他人如何使用它。

这是一个简单的工具,可以让您熟悉将对象映射到数据库时遇到的一些问题。

然后,您将能够感受到它 ,并决定它是否值得学习曲线。

将会有新的概念来掌握和试验,例如:

  • 工作单元 :当您执行保存和删除等时,ORM往往不会立即执行此操作,而基于记录集的DAL将执行此操作。 这可能会令人惊讶,因此您需要了解一下。 阅读工作单元模式以了解这一点。
  • 批量操作是OR / M的问题。 数据读取器可以有效地遍历数千行,但使用ORM时,在处理大批量对象时必须要小心。 再一次,读一读。
  • 当可以做像customer.Orders.Count这样的东西时, 关联看起来很棒,但它们也是许多问题的原因。 在与协会合作时,您需要找到一些安全的做法。

......仅举几例。

首先,不要担心继承和东西,只需从简单开始并拥有映射到表的简单实体。

尝试使用它们的方式与使用现有DAL的方式相同。 然后开始尝试关联。

然后尝试在您的实体中添加更多行为。 如果您开始喜欢这个,并且觉得您需要更多功能,请考虑尝试使用功能更丰富的ORM,例如LightspeedNHibernate

希望这可以帮助!

===============>>#3 票数:2

绝不是MVC是网络的唯一设计模式,但它是一个有用的模式。

在我看来,即使你不能/不会采用'V'或'C',仅采用'M'将会产生红利。

===============>>#4 票数:0

对我来说,看起来你正在尝试做LINQ已经为你做的事情。 如果你被困在一个不能使用它的旧框架中,我可能会建议您使用Subconic( http://subsonicproject.com/ )而不必手动手动创建所有这些模型对象。

我有一个项目,我处于类似的困境,并改变到亚音速中途,结果非常好。 更快的开发和更容易阅读/使用代码。

  ask by Steve Tranby translate from so

未解决问题?本站智能推荐: