Awk*_*der 5 identity fluent-nhibernate
如何为没有标识列的表指定流畅的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);
}
}
Run Code Online (Sandbox Code Playgroud)
我的意思是没有在数据库中定义的主键(在数据库中没有太多定义).
我找到答案是:
public CustomerNewMap()
{
WithTable("customers_NEW");
Not.LazyLoad();
Id(x => x.Username).GeneratedBy.Assigned();
Map(x => x.Company);
}
Run Code Online (Sandbox Code Playgroud)
这并没有直接回答问题..但它回答了此处已接受答案的评论中的问题。
我们的 Ledger 上的 SQL 视图也有同样的问题。问题是,当Id属性不唯一时,NHibernate 会很乐意重复行。在我们的例子中..我们的分类帐条目的集合CustomerAccountId为Id..,这在视图中并不唯一。为了解决这个问题......我映射了一个 CompositeId,它基于我能找到的使该行唯一的任何内容。CustomerAccountId在我们的例子中,它是和的组合WeekEnding:
CompositeId()
.KeyProperty(x => x.CustomerAccountId)
.KeyProperty(x => x.WeekEnding);
Run Code Online (Sandbox Code Playgroud)
这足以让 NHibernate 不映射重复项。
| 归档时间: |
|
| 查看次数: |
11330 次 |
| 最近记录: |