【问题标题】:Use subsonic 3.0 SimpleRepository to a existing database对现有数据库使用 subsonic 3.0 SimpleRepository
【发布时间】:2009-07-22 09:51:08
【问题描述】:

我想在我的项目中使用 subsonic 3.0 SimpleRepository,但是有一个问题:

如果我的表名像 Product 等,那么我无法从数据库中获取任何数据, 因为 subsonic 会生成类似 "Select * from Products ..." 的 sql 语句

PS:我不想更改我的表名。

我写了一个t4模板来解决这个问题,希望有人可以看看我的 代码并告诉我我做对了吗?

代码:SimpleRepositoryDemo

【问题讨论】:

    标签: subsonic subsonic3


    【解决方案1】:

    听起来您已经设计了一个数据库,在这种情况下,我建议您改用 LinqTemplates 或 ActiveRecord。 SimpleRepository 似乎真的适合代码优先的开发过程,而不是数据库优先。

    【讨论】:

    • 是的,这是一个现有的项目。但是如果我使用 LinqTemplates 或 ActiveRecord,我必须先将我的实体转换为亚音速生成的实体,然后再将新记录插入数据库
    • 是的,但是如果您使用 LinqTemplates,我希望您可以将现有实体替换为生成的实体,将任何所需的现有功能移动到部分类中。
    • 但我不想改变我的实体。 1. 我想让我的实体简单 2. 移动数百个实体并非易事
    【解决方案2】:

    听起来您有一个现有的数据库架构和一个现有的实体模型(也称为存储库),并且您希望 ORM 将数据推入/拉出您的数据库和应用程序。

    不幸的是,SubSonic 不是适合这种情况的工具。 SubSonic 将从您的数据库架构创建您的实体模型,或者它将从您的实体模型创建您的数据库架构。但它不会从一个映射到另一个,因为它的设计理念是“约定优于配置”。 SubSonic 很简单,这就是它的优势,但简单是有代价的。

    在这种情况下,您需要的是 NHibernate。它的设计具有很多可配置性。见http://nhforge.org/Default.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多