2
私は、次の流暢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によって生成された)私のマッピングの1つ
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" は発見されていないということです。関連するエンティティを検索するときは、PKに文句
大会
public class PrimaryKeyConvention
: IIdConvention
{
public void Apply(IIdentityInstance instance)
{
instance.Column(instance.EntityType.Name + "Id");
}
}
は
通常のマッピング( 'ClassMap <>'で手作業で)を使用している場合、規則は使用されますか?私がコンベンションを使用した唯一の時間は、私が自動マッピングしているときです。彼らがしたら、私には設定がよさそうだ。 –
マッピングの例を追加しました。 – jgauffin
私はあなたのマッピングが少しオフだと思っています。あなたがIdに「Id」という列を明示的に与えて、次に「TestResultId」と呼ばれるものを探すように構成を変更しているように見えます。 –