我是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映射的新表中,并且表模式必须保持原样。因为客户在每晚的基础上更新这些表格。
感谢任何帮助。
由于
答案 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);
}