C# 创建模型类还是坚持使用泛型数据库实用程序类更好?

C# 创建模型类还是坚持使用泛型数据库实用程序类更好?,c#,asp.net-mvc,database,ado.net,C#,Asp.net Mvc,Database,Ado.net,我们内部有一个用于数据库调用的简单实用程序类(ADO.NET的轻量级包装器),但我正在考虑为每个数据库/对象创建类。这样做是明智之举,还是只有在使用ASP.NET的完整MVC框架时才会受益 因此,我们有: SQLWrapper.GetRecordset(connstr-alias, sql-statement, parameters); SQLWrapper.GetDataset(connstr-alias, sql-statement, parameters); SQLWrapper.Exec

我们内部有一个用于数据库调用的简单实用程序类(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();

这是明智之举,还是矫枉过正?我可以看到重用、更改数据库和维护/可读性的好处。

MVC绝不是web的唯一设计模式,但它是一种有用的模式


在我看来,即使你不能/不会采用“V”或“C”,只采用“M”也会带来好处。

这个问题很复杂,数据驱动设计与领域驱动设计。对于任何具有大量行为的应用程序,应首选域驱动设计。使用数据驱动的设计,报表或实用程序往往工作得更好(或开发得更快)

你要问的是“我的公司是否应该在我们设计代码的方式上做出根本性的改变”。作为一个域名狂人,我本能的反应是尖叫“是的”。然而,从你问题的简单性质来看,我不确定你是否完全理解你提议的改变的范围。我认为你应该和你的团队多谈谈这件事


找一些文学作品,比如书或杂志,然后你就可以更好地判断你应该朝哪个方向走。

在我看来,你似乎在尝试林克已经能为你做的事情。如果您被困在一个旧的框架中,无法使用它,我可能建议您使用sublic()而不是手动创建所有这些模型对象


我有一个项目,我处于类似的困境,中途改为亚音速,取得了非常好的效果。更快的开发速度和更易于阅读/使用的代码。

您讨论的方法被许多人认为是一种好方法,包括我在内!学习这种方法需要一些努力,但不要因此而拖延

用LINQ to SQL尝试一个小项目怎么样?也许可以找到一个新的方法,并研究其他人是如何使用它的

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

然后,您将能够对它有一种感觉,并决定它是否值得学习

将有新的概念需要掌握和尝试,例如:

  • 工作单元:当您执行保存和删除等操作时,ORM往往不会立即执行此操作,而基于记录集的DAL则会。这可能会令人惊讶,所以你需要了解一些。阅读工作单元模式以了解这一点
  • 批量操作是OR/M的一个问题。数据读取器可以有效地迭代数千行,但对于ORM,在处理大批量对象时必须小心。再一次,有一个值得一读
  • 当可以做一些事情时,比如
    customer.Orders.Count
    ,关联似乎很好,但它们也是许多问题的原因。在使用关联时,您需要找到一些要遵循的安全实践
…举几个例子

对于初学者来说,不必担心继承之类的问题,只需从简单开始,使用映射到表的简单实体即可

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

然后,或许可以尝试在你的实体中加入更多的行为。如果你开始喜欢这个,并且觉得你需要更多的特性,试着尝试一个更丰富的ORM。p>
希望这有帮助

在编写本文时,我正在测试LINQtoSQL,它非常棒。看起来它是用于简单映射的,但它应该足以满足我的任何需要。肯定是一些应该生成的东西。谢谢你的信息,我会看看那些书。对不起,我的问题很简单。我不想写太多,也许应该问一下模型和无模型的区别。我的团队的问题是,我是新来的,他们正在运行很多非常传统的sphagetti经典ASP代码,而且他们在使用ASP.Net的一些功能时仍然以这种方式开发。(之前回复为答案,根据社区规则已删除)感谢您的输入,我想我将开始添加/替换您所说的“M”!(以前作为答复答复,根据社区规则删除)