我们内部有一个简单的实用程序类用于数据库调用(围绕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();
这会很聪明,还是会有点矫枉过正?我可以看到重用,更改数据库和维护/可读性的好处。
答案 0 :(得分:8)
这个问题是加载的,数据驱动设计与域驱动设计。对于具有大量行为的任何应用程序,应首选域驱动设计。报告或实用程序应用程序倾向于使用数据驱动设计更好地(或更快地开发)。
您所问的是“我的公司应该如何设计我们的代码”。作为一个领域狂热者,我的直觉反应是尖叫是。但是,由于问题的简单性,我不确定您是否完全理解您提出的更改的范围。我想你应该多谈谈你的团队。
获取一些文献,例如Evan's DDD本书或free foundations ebook,然后您就可以更好地判断应该走向哪个方向。
答案 1 :(得分:2)
MVC绝不是网络的唯一设计模式,但它是一个有用的设计模式。
在我看来,即使你不能/不会采用'V'或'C',也只会采用'M'来支付股息。
答案 2 :(得分:2)
你所讨论的方法被许多人视为好人,包括我!学习这种方法需要付出一些努力,但不要让它让你失望!
使用LINQ to SQL 尝试小项目怎么样?也许在nice reference project上找到google code,并研究其他人如何使用它。
这是一个简单的工具,可以让您熟悉将对象映射到数据库时遇到的一些问题。
然后,您将能够感受它,并决定是否值得学习曲线。
需要掌握新概念并进行实验,例如:
customer.Orders.Count
这样的东西,但它们也是许多问题的原因。在与协会合作时,您需要找到一些安全的做法。 ......仅举几例。
对于初学者来说,不要担心继承和东西,只需从简单开始并拥有映射到表的简单实体。
尝试以与使用现有DAL相同的方式使用它们。然后开始尝试关联。
然后尝试在您的实体中添加更多行为。如果您开始喜欢这个,并且觉得您需要更多功能,请考虑尝试使用功能更丰富的ORM,例如Lightspeed或NHibernate。
希望这有帮助!
答案 3 :(得分:0)
对我来说,看起来你正在尝试做LINQ已经为你做的事情。如果你被困在一个不能使用它的旧框架中,我可能会建议你使用Subconic(http://subsonicproject.com/),而不是手动手动创建所有这些模型对象。
我有一个项目,我处于类似的困境,并在结果中途改变为亚音速。更快的开发和更容易阅读/使用代码。