寻找.Net ORM

SLa*_*aks 8 .net c# 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

and*_*cci 5

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

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

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

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

例如,通过急剧迁移,您可以编写如下内容:

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

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

干杯,祝你好运,

AndréCarlucci