Можете ли вы указать столбец идентификаторов при использовании стратегии Fluent Nhibernate Table-Per-Subclass?

Я создаю сопоставление подкласса гибернации Fluent N, которое в настоящее время выглядит примерно так:

public class TaskDownloadMap: SubclassMap<TaskDownload>
{
    public TaskDownloadMap()
    {
        Table("TasksDownload");

        Map(x => x.ExtraProperty1, "ExtraProperty1")
            .Nullable();

        Map(x => x.ExtraProperty2, "ExtraProperty2")
            .Nullable();
    }
}

Когда я пытаюсь сохранить одну из этих сущностей, я получаю исключение:

Test.TaskRepositoryTest.DeleteTest:
NHibernate.Exceptions.GenericADOException : could not insert: [TaskManager.Entities.TaskDownload#269][SQL: INSERT INTO TasksDownload (ExtraProperty1, ExtraProperty2, Task_id) VALUES (?, ?, ?)]
  ----> System.Data.SqlClient.SqlException : Invalid column name 'Task_id'.

Это потому, что столбец Id, который я установил в таблице своего подкласса, называется «TaskId». Есть ли какие-нибудь способы переопределить схему именования по умолчанию, которую пытается использовать nhibernate? Кажется, у меня нет возможности указать столбец «Id» в подклассе, и я не могу найти, чтобы кто-нибудь еще даже говорил об этом.

Родительское сопоставление выглядит следующим образом:

public class TaskMap: ClassMap<Task>
{
    public TaskMap()
    {
        Table("Tasks");

        Id(x => x.Id, "Id")
            .GeneratedBy.Identity();

        .
        .
        .

    }
}

Как я уже сказал, я использую стратегию «Таблица для каждого подкласса», так что это 2 разные таблицы. Я могу изменить ключ в моей таблице TasksDownload на «Task_id», но я бы предпочел просто указать, что это «TaskId» в моем сопоставлении, чтобы я мог придерживаться своего соглашения об именах.

7
задан Ben Tidman 2 February 2012 в 22:39
поделиться