Как сделать с Composid в обеих таблицах?

й раз, когда я загружаю класс Task, свойство Document всегда имеет значение null, несмотря на наличие данных в БД.

Класс задачи:

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

Если я взламываю данные в БД, чтобы идентификаторы совпадали, тогда данные загружаются, но, очевидно, это неверно - но, по крайней мере, это доказывает, что загружает данные.

Редактировать: рыться в беглом источнике 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,

У кого-нибудь есть идеи?

Спасибо

Андрей

Ответы на вопрос(6)

Ваш ответ на вопрос