4

遇到了这个:

http://www.eggheadcafe.com/articles/adonet_source_code_generator.asp

并且想知道这是否是正确的解决方案,因为我不太喜欢为每个存储过程创建一个类,或者我是否使用 Enterprise Library for ASP.net 2.0 项目。

4

4 回答 4

6

您绝对不应该为每个存储过程创建一个类。您可以采用多种方法来处理数据库交互。你应该好好看看那里的主要框架,然后决定哪一个最适合你。Castle Project 解决方案很棒,它依赖于 nHibernate ( nHibernate )。LINQ 是 Mircrosoft ( LINQ Project ) 提供的类似产品。这两种解决方案都是完整的 ORM 框架(对象关系映射),并将生成动态 SQL 以将您的对象持久保存在数据库中。每个人都有自己的怪癖,并喜欢您以特定方式构建对象。如果您不想管理系统使用的 SQL,我肯定会推荐其中一种方法。

我来自数据库背景,并且更喜欢对我的 SQL 进行更多控制。特别是我喜欢让我的交互由存储过程处理。我发现这使我能够更好地控制 SQL 以进行优化,但可以帮助我以更友好的方式管理数据库安全性。为了适应这种方法,我推荐使用 iBatis ( iBatis ) 之类的方法。iBatis 不是一个完整的 ORM,而是一个简单的 SQL 映射器。我的方法的缺点是您需要编写更多代码 (SQL),但我不介意这种权衡。

于 2008-10-20T21:39:30.743 回答
0

在 C# 类中包装数据库表的方法有很多种。在您链接到的选项和实体框架之间进行选择之前,您可能需要调查一些选项。

有一种称为“活动记录模式”的软件模式准确地描述了这种方法 - 每个表都有一个 C# 类,具有诸如 Customer.GetById()、Customer.Save() 等加载/保存方法。

对于 ASP.NET 2.0,请查看Castle Project 的 ActiveRecord 实现和名为ActiveWriter的第三方 Visual Studio 插件工具,它允许您使用拖放界面为表生成类包装器。

于 2008-10-20T21:28:10.110 回答
0

您需要确定在什么时候需要由表组成的数据集,以及是否希望 SQL 使用存储过程生成这些数据集,或者您的业务逻辑层是否会处理这些数据集。正如 Dr8k 所说,nHibernate 会为您创建 SQL,但是 nHibernate 有一个学习曲线。ORM 将控制您获取数据的方式,并且根据您的环境和 DBA 的舒适度,您可能会遇到其他需要克服的问题。

如果您更熟悉 SQL,那么还有另一个名为SubSonic的工具会为您创建包装器(如 Active Record),同时还为您提供使用存储过程的能力。如果您无法使用 LINQ,也可以使用具有流畅界面的不错的查询工具。

于 2008-10-20T21:49:54.247 回答
0

是否有升级到框架 3.5 的可能性?如果是这样,请查看 LINQ to SQL 和实体框架,因为这将为您完成很多工作。

如果不是,那么只要它生成不将您绑定到第三方库的标准代码,那么您当然可以使用它。在我的工作场所,我们有自己的与此类似的生成器,它运行良好,尽管我们将很快迁移到 LINQ to SQL。

于 2008-10-20T21:25:59.473 回答