寻找.Net ORM

时间:2010-04-16 14:33:24

标签: c# .net orm

我正在寻找一个具有相当不寻常的要求的.Net 3.5 ORM框架:

  • 我需要在运行时使用我的最终用户定义的模式创建和更改表 (显然,这不会是强类型的;我正在寻找像DataTable那样的东西)
  • 我还想要非动态表中的行的常规强类型部分类,具有自定义验证和其他逻辑。 (像普通的ORM一样)
  • 我想加载整个数据库(或整个表)一次,并在(WinForms)GUI的整个生命周期中将其保存在内存中。 (我有一个连接速度相对较慢的共享SQL Server)
  • 我想要完整的WinForms数据绑定支持
  • 我还想在共享服务器(与SQL Server快速连接)上为ASP.Net提供常规的LINQ支持(如LINQ-to-SQL)
  • 除了SQL Server之外,我还希望能够使用支持XCopy部署的单文件数据库(无需在最终用户的计算机上安装SQL Server)。 (可能是Access或SQL CE)
  • 最后,它必须是免费的(除非是OpenAccess)

我可能必须自己编写,因为我认为现有的ORM不符合这些要求。
但是,如果有轮子,我不想重新发明轮子,因此这个问题。

我正在使用VS2010,但我不知道我的webhost(LFC)何时会升级到.Net 4.0

2 个答案:

答案 0 :(得分:5)

我不认为一个框架会这样做,但你也不需要重新发明轮子。

对于非动态部分,您可以使用像Entities Framework,NHibernate或Subsonic这样的普通ORM,并为动态部分破解一些类似ruby的迁移框架。

应该很容易,因为这些迁移框架已经将模式修改的所有方法都映射到了几个数据库,只需要编写一些类来公开它们。

编辑: 类似迁移的框架将是这样的: “我需要在运行时使用我的最终用户定义的模式创建和更改表。 (显然,这不会是强类型的;我正在寻找像DataTable那样的东西)“

例如,使用sharp-migrations,您可以编写如下内容:

DataClient.Add
          .Table("TableName")
          .WithColumns(
             Column.AutoIncrement("ID").NotNull().AsPrimaryKey(),
             Column.String("NAME"),
             Column.Date("DATESTART"),
             Column.Int32("SOMENUMBER"),
          );

如您所见,它正在使用字符串,因此您可以在运行时创建任何表。

干杯,祝你好运,

AndréCarlucci

答案 1 :(得分:0)

如果您愿意为SqlLite编写提供程序并更新Query类以使用LINQ,则可以查看ObjectDataBlocks

相关问题