13

我正在为 C# 寻找一个简单的 CRUD(或 DAL)生成器。我不想要任何重量级的东西,因为我在 SQL Server 2008 数据库中只有几个表。

有什么建议么?我知道 .netTiers,但这对我的需要来说太多了。

谢谢!

更新:我尝试了 LINQ to SQL,但它不能很好地满足我的需求。

4

13 回答 13

10

我在过去的项目中使用过 SubSonic,它轻巧且易于使用。

他们提供了一个简单的教程视频,完全设置它应该不超过 10 分钟。我建议观看处理 Web 应用程序项目的视频的后半部分,因为它向您展示了如何创建一个自定义的 Visual Studio 按钮,该按钮在您单击它时为您创建 DAL,而不是像他们建议的那样使用自定义构建提供程序视频的前半部分。

它提供了几种访问数据的方法、Active Record、生成类型化的存储过程和视图,或者您可以使用的查询语言。

使用后,我发现了一些怪癖:

  • 如果您使用没有参数的生成存储过程,它将抛出一个NullReferenceException. 一种解决方法是创建一个未在过程中使用的虚拟参数
  • DeepSave()功能在当前 2.1 版本中不起作用,您必须单独保存连接表中的数据
  • 当您使用附加的(例如Where(Tag.Columns.TagName).IsEqualTo("subjective"),确保使用字符串值Tag.Columns.TagName来引用列时 - 否则如果您尝试使用Column.Schema
于 2009-03-23T02:39:17.043 回答
7

Visual Studio 附带了一个几乎没人知道的代码生成器,称为T4

您应该能够相对轻松地使用它来创建 CRUD 模板。

编辑

这是一个示例:http ://www.olegsych.com/2008/01/how-to-use-t4-to-generate-crud-stored-procedures/

于 2009-03-23T02:54:52.187 回答
3

MyGeneration有一些相当不错的CRUD SP 生成模板

于 2009-03-23T02:12:36.607 回答
3

试试http://pureobjects.com/ 它不需要任何其他工作

于 2011-04-12T08:31:08.690 回答
2

如何使用使用 DataSet 设计器创建的 DataSet。我记得在过去(.NET 1.0 和 1.1),我们会将 DataAdapter 拖到设计图面上,指定 Select 查询,然后根据 Select 查询为我们创建 Insert、Update 和 Delete 查询。

于 2009-03-23T02:13:03.673 回答
2

看看Codesmith2.6 版本是免费的,以后的版本是供购买的。

于 2009-03-23T04:29:06.700 回答
2

万一钱不是一个大问题,我在CodeSmith中使用模板取得了巨大的成功。

有大量用于 CRUD 操作的示例模板,它会直接从您的数据库中读取。

于 2009-03-23T02:54:21.983 回答
1

LINQ To SQL 很简单,它内置在 .NET 3.5 SP1 中。

于 2009-03-23T02:11:49.527 回答
1

Visual Studio 向导将为您创建一个简单的 CRUD 应用程序。

在表单上拖动一个数据网格,单击连接属性并从那里按照向导进行操作。

不是最佳实践,但很简单并且有效......

于 2009-03-23T02:14:51.297 回答
1

您是否尝试过动态数据 Web 应用程序(使用 LINQ to SQL)或动态数据实体 Web 应用程序(使用实体框架)。

MSDN:演练:使用脚手架创建新的 ASP.NET 动态数据网站

于 2009-03-23T03:56:42.410 回答
1

我使用的是 SubSonic 3 ActiveRecord,但后来搬到了 BLToolkit。由于缺乏良好的文档,BLToolkit 很难上手,但一旦你习惯了它,它就非常像 SubSonic……除了没有性能问题。

SubSonic 很棒而且很简单,但是对于任何实用的东西来说,性能都无法忍受。每当连接或子查询完成时,它都会拉下整个表。

于 2011-10-13T18:25:42.560 回答
1

我使用ssms 工具包

于 2011-09-30T15:51:23.450 回答
0

看看 LLBLGen Pro,我发誓。它不是免费的,但也不贵。您可以在一小时内启动并运行(编写代码),它附带的模板生成的代码基本上可以做任何您想做的事情。甚至不必再考虑数据库接口代码真是太好了(而且富有成效)。

于 2009-09-19T00:51:04.237 回答