Всякий раз, когда я загружаю класс 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
Если я взломаю данные в db, чтобы идентификаторы совпадали, тогда данные загружаются, но, очевидно, это неверно - но, по крайней мере, он доказывает, что он загружает данные.
Изменить: рыться в свободном источнике 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" />
Изменить: heres the schema:
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,
У кого-нибудь есть идеи?
Спасибо
Эндрю