不使用外键时nhibernate hasmany

时间:2009-11-27 09:29:14

标签: nhibernate fluent-nhibernate foreign-keys

假设我有一个请求表,如下所示:

RequestId INT  
ReferenceNumber VARCHAR

每个请求都记录在requestlog表中。表之间没有外键:

RequestLogId INT  
ReferenceNumber VARCHAR  
Content VARCHAR  

请求日志包含请求的内容,此内容需要存储一段时间。请求可以删除,但只能在一段时间后删除日志。

如何映射我的请求对象,以便它可以包含基于referencenumber的请求日志列表?

我试过了:

Table("InsuranceRequest");  
Id(i => i.Id).Column("InsuranceRequestId");  
Map(i => i.ReferenceNumber);  
HasMany(i => i.InsuranceRequestLog).KeyColumn("RefenceNumber").LazyLoad.Cascade.None();

虽然不起作用。此映射尝试将referencenumber映射到请求日志的RequestLogId。有没有办法指定加入列应该是insurancerequestlog referencenumber?

1 个答案:

答案 0 :(得分:-1)

没有什么能阻止你的表结构中的多对多.. 我建议更改结构并使它们成为外键,并且我确信如果在结构更改后映射不起作用,那么多对多映射将适用于你。

你的另一个提示: 获取一个空数据库并尝试公开模式.. 比你能看到nhibernate认为结构应该是什么样的