Соглашение о первичном ключе не используется - PullRequest
2 голосов
/ 20 октября 2011

У меня есть следующая конфигурация Fluent NHibernate:

var fluentConfig = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
    .ConnectionString(c => c
    .FromConnectionStringWithKey("TestPortalDbContext"))
)
.Mappings(m =>
    m.FluentMappings.AddFromAssemblyOf<Program>()
    .Conventions.AddFromAssemblyOf<PrimaryKeyConvention>()
    .Conventions.Add<PrimaryKeyConvention>()
);

Проблема в том, что PrimaryKeyConvention не используется.Я неправильно его настраиваю?

Обновление

Одно из моих сопоставлений (сгенерированное NHibernate Mapping Generator )

public class TestResultMap : ClassMap<TestResult> {

    public TestResultMap() {
        Table("TestResults");
        LazyLoad();
        Id(x => x.Id).GeneratedBy.Identity().Column("Id");
        References(x => x.TestSession).Column("SessionId");
        References(x => x.Instruction).Column("InstructionId");
        References(x => x.SolvedBy).Column("SolvedBy");
        Map(x => x.State).Column("StateId").CustomType<TestState>();
        Map(x => x.ActualResult).Column("ActualResult");
        Map(x => x.CompletedAt).Column("CompletedAt");
        Map(x => x.IsSolved).Not.Nullable().Column("IsSolved");
    }
}

Ошибка

Ошибка, которую я получаю, состоит в том, что ключ "ClassName_id" не найден.

Условное обозначение

public class PrimaryKeyConvention
  : IIdConvention
{
    public void Apply(IIdentityInstance instance)
    {
        instance.Column(instance.EntityType.Name + "Id");
    }
}

Жалуется на ПК при поиске связанной сущности

1 Ответ

0 голосов
/ 10 ноября 2011
Соглашения

также применяются к отображениям, но никогда не переопределяют явно установленные значения, такие как .Column("Id").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...