创建Model类还是坚持使用通用数据库实用程序类更好?

我们有一个简单的实用程序类,用于我们的数据库调用(围绕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
额外 编辑
意见: 3

4 答案

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

我有一个项目,我陷入了类似的困境,并在中途转入亚音速,并取得了出色的成绩。更快的开发和更容易阅读/使用代码。

0
额外
我在写这篇文章的时候测试了Linq to SQL,这非常棒。看起来像是简单的映射,但它应该足够我需要的任何东西。绝对是应该生成的东西。
额外 作者 Steve Tranby,

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

你问的是“我的公司应该如何根据我们的代码设计做出根本性转变”。作为一个领域怪物,我的直觉反应是尖叫。但是,由于问题的简单性,我不确定您是否完全理解您提议的变更范围。我认为你应该多谈谈你的团队。

获取一些文献,如 Evan's DDD 书或免费基金会电子书,然后你会更好地判断你应该去哪个方向。

0
额外
感谢您的信息,我会研究这些书籍。对不起,我的问题被加载/简单。我不想写太多,可能应该只是询问模型与无模型。我的团队面临的问题是,我在这里是新手,他们正在运行大量和传统的sphagetti Classic-ASP代码,并且在使用ASP.Net的某些功能时仍然以这种方式开发。 (之前回答为答案,根据社区规则删除)
额外 作者 Steve Tranby,

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

在我看来,即使你不能/不会采用'V'或'C',只要采用'M'就会派发股息。

0
额外
感谢您的输入,我想我会开始添加/替换'M'! (以前回答为答案,根据社区规则删除)
额外 作者 Steve Tranby,

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

只是尝试使用LINQ to SQL 小型项目?也许在漂亮的参考项目 .com“rel =”nofollow noreferrer“> Google code ,并研究其他人如何使用它。

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

然后,您可以感受它,并决定是否值得学习曲线。

There will be new concepts to grasp and experiment with, things like:

  • Unit of Work: When you execute Save and Delete etc, an ORM tends to not do this immediately, whereas a recordset based DAL will. This can be surprising so you'll need to learn a bit about that. Read up on the Unit of Work pattern to get an understanding of this.
  • Bulk Operations are an issue with OR/M. A data reader can efficiently iterate through thousands of rows, but with an ORM you have to be careful when working with large batches of objects. Again, one to read up on.
  • Associations seem great when can do stuff like customer.Orders.Count but they are also the cause of many problems. You'll need to find some safe practices to follow when working with associations.

......举几个例子。

对于初学者,不要担心继承和东西,只需从简单的开始,并有简单的映射到表的实体。

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

那么也许尝试在你的实体中加入更多的行为。如果你开始喜欢这一点,并觉得你需要更多的功能,可以考虑尝试一个功能更丰富的ORM,比如 LightspeedNHibernate

希望这可以帮助!

0
额外