每当我加载 Task 类时,Document 属性始终为 null,尽管 db 中有数据。
任务类:
public class Task
{
public virtual Document Document { get; set; }
AutoPersistenceModel 的任务映射覆盖:
public void Override(AutoMap<Task> mapping)
{
mapping.HasOne(x => x.Document)
.WithForeignKey("Task_Id");
如您所见,NHProf 所说的正在运行,连接条件错误,WithForeignKey 似乎没有生效。事实上,我可以在上面的代码中写任何字符串,这没什么区别。
FROM [Task] this_
left outer join [Document] document2_
on this_.Id = document2_.Id
它应该是:
FROM [Task] this_
left outer join [Document] document2_
on this_.Id = document2_.Task_Id
如果我破解数据库中的数据以使 id 匹配,则加载数据,但显然这是不正确的 - 但至少它证明它加载了数据。
编辑:在流利的 nhib 源中翻找 XML 会产生以下结果:
<one-to-one foreign-key="Task_Id" cascade="all" name="Document" class="MyProject.Document, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
编辑:继承人架构:
CREATE TABLE [dbo].[Document](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Task_Id] [int] NOT NULL,
CREATE TABLE [dbo].[Task](
[Id] [int] IDENTITY(1,1) NOT NULL,
有人有什么想法吗?
谢谢
安德鲁