【问题标题】:Looking for a .Net ORM [closed]寻找.Net ORM [关闭]
【发布时间】:2010-04-16 14:33:23
【问题描述】:

我正在寻找具有一组相当不寻常的要求的 .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,但我不知道我的虚拟主机 (LFC) 何时会升级到 .Net 4.0

【问题讨论】:

  • @SLaks,你有没有想过解决这个问题?我对这个类似的问题有一个开放的赏金:stackoverflow.com/questions/5092030/…
  • @SLaks,你有没有机会公开它?
  • 不,尽管我可能会在未来的某个时候。它没有优秀的设计师,而且它完全符合我的需求。
  • 您最终采用什么方法来创建动态架构?
  • @Smart:我写了一个 DDL 生成器。 (实际上我还没有完成那部分;它被搁置了)

标签: c# .net orm


【解决方案1】:

我不认为一个框架可以做到这一点,但你也不需要重新发明轮子。

您可以将实体框架、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"),
          );

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

祝你好运,

安德烈·卡鲁奇

【讨论】:

  • 我已经开始为此编写自己的框架;它在很大程度上是 DataSet / DataTable 的更友好的克隆(但支持可空类型,更好的验证等......)。我计划允许将类型化的行对象用作实体框架的 POCO。
  • “类 ruby​​ 迁移框架”是什么意思?
【解决方案2】:

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

【讨论】:

  • 好像不支持数据绑定。
  • 你可以从 QueryDataAdapter.CreateList 得到一个 List
  • 获取List<T> 对数据绑定完全没用。我想要更改事件、添加/删除跟踪等。
  • 它使用 ActiveRecord 方法,因此添加 DataBidning 应该是相当简单的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-06
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 2013-05-06
相关资源
最近更新 更多