【问题标题】:Mapping Tables with NHibernate使用 NHibernate 映射表
【发布时间】:2012-01-04 21:00:43
【问题描述】:

我是 NHibernate 的新手,所以我不确定我是否可以在这里提问。但是这里有。

这是我的问题:

我正在使用 Orchard CMS 构建网站。所有的 Orchard 表都由 NHibernate 映射。我在同一个数据库中也有 NHibernate 未映射的表。这些表格由客户提供。我需要使用 Orchard 查询这些表并在前端显示数据。我必须保持表模式完好无损。我有一个关于如何使用 NHibernate 映射表的教程,但是我在教程中看到的所有内容都要求表有一个 ID 列作为主键。客户提供给我的所有表格都没有将 ID 作为第一个/主键列。是否可以不使用 ID 方法映射到这些表?还是 ID 方法的变体?

Id(x => x.Id);

我可以使用以下方法映射到表格:

MyColumnName/Primarykey(x => x.Id);

Id(x => x.MyColumnname/PrimaryKey);

同样,此时我无法将数据迁移到 NHibernate 映射的新表中,并且表架构必须保持完整。由于客户每晚更新这些表。

感谢任何帮助。

谢谢

【问题讨论】:

  • 表有主键吗?
  • 是的,他们确实有主键。它们只是不是 ID 列。例如,其中一个表中的主键和第一列是:TopicCode(First column/Primary key。这会工作吗?Id(x => x.TopicCode); Map(x => x.BrochureDesc); Map(x => x.URL);地图(x => x.ControlPrice);地图(x => x.City);地图(x => x.Country);
  • 您是使用 Fluent Nhibernate 还是 Loquacious 映射来映射您的表?
  • 我正在使用 FluentNHibernate.Mapping;
  • 射击。克里斯,您的评论消失了。可以转发吗?

标签: nhibernate orm fluent-nhibernate mapping orchardcms


【解决方案1】:

您可以为属性指定不同的列名,甚至可以指定不同的类型,如果 y

table Topic
(
  TopicCode int,
  BrochureDesc text,
  URL text,
  ...
  primary key(TopicCode)
)

public TopicMap()
{
    Id(x => x.Id, "TopicCode").GeneratedBy.Native();
    Map(x => x.BrochureDescription, "BrochureDesc");
    Map(x => x.URL);
    ...
}

编辑:

public TopicMap()
{
    CompositeId()
        .KeyProperty(x => x.Subtitle)
        .KeyProperty(x => x.Description)
        .KeyProperty(x => x.ImageURL);
}

【讨论】:

  • 谢谢菲罗。同样,我没有创建这些表。它们已经被创建。另外,如何在 Map 文件中标记多个主键?我的地图: public Pryor_TopicInfoMap() { Id(x => x.TopicID);地图(x => x.Topic);地图(x => x.Subtitle);地图(x => x.描述);地图(x => x.ImageURL); } }
  • 谢谢菲罗。同样,我没有创建这些表。它们已经被创建。另外,如何在 Map 文件中标记多个主键?我的地图: public Pryor_TopicInfoMap() { Id(x => x.TopicID); NHibernate 会默认分配这个主键吗?地图(x => x.Topic); x.Subtitle);地图(x => x.描述);地图(x => x.ImageURL); } }
猜你喜欢
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多