使用NHibernate映射表

时间:2011-11-23 15:06:05

标签: nhibernate orm fluent-nhibernate mapping orchardcms

我是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映射的新表中,并且表模式必须保持原样。因为客户在每晚的基础上更新这些表格。

感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:2)

您可以为属性指定不同的列名,如果是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);
}