如何用流利的NHibernate的映射不具有标识列的表指定?
我想是这样的:
public sealed class CustomerNewMap : ClassMap<CustomerNew>, IMap
{
public CustomerNewMap()
{
WithTable("customers_NEW");
Not.LazyLoad();
Not.Id(); // this is invalid...
Map(x => x.Username);
Map(x => x.Company);
}
}
我的意思是(没有太大的在数据库中定义)在数据库中没有定义主键。
我找到了答案是:
public CustomerNewMap()
{
WithTable("customers_NEW");
Not.LazyLoad();
Id(x => x.Username).GeneratedBy.Assigned();
Map(x => x.Company);
}
这并没有直接回答这个问题..但它回答了这个问题,在这里接受的答案的评论。
我们有一个SQL视图在我们莱杰同样的问题。 问题是,NHibernate的会很乐意重复行时Id
属性不是唯一的。 在我们的例子。我们有这样的有总帐条目CustomerAccountId
设置为Id
..这不是视图中是唯一的。 要解决这个问题..我绘制了基于什么我能找到的做出行唯一一个CompositeId。 在我们的例子中,它是一个组合CustomerAccountId
和WeekEnding
:
CompositeId()
.KeyProperty(x => x.CustomerAccountId)
.KeyProperty(x => x.WeekEnding);
这是足有NHibernate的不重复的映射。
我发现我已经在类似的情况下,明确设定列名。 就像是
Id(x => x.Username).Column("Username").GeneratedBy.Assigned();