1
コードの下に、顧客は複数の住所を持つことができます。 1対多の関係があります。私はFKとしてアドレステーブルに Fluent NHibernate:表記規則/ KeyColumn
が、私は」を追加しようとした「顧客」とはない「CUSTOMER_ID」という名前のフィールドが欲しい:.KeyColumn("Customer")
>私はForeignKeyConvention変更なしに変更するために使用しようとした変化がない
。
public class CustomerMap : ClassMap<Customer>
{
protected CustomerMap()
{
Id(x => x.Id).Not.Nullable();
Map(x => x.FirstName).Not.Nullable().Length(25);
Map(x => x.LastName);
HasMany<Address>(x => x.Addresses)
.KeyColumn("Customer")
.AsSet()
.Inverse()
.Cascade.AllDeleteOrphan();
}
}
public class AddressMap : ClassMap<Address>
{
public AddressMap()
{
Id(x => x.Id);
Map(x => x.City).Not.Nullable().Length(100);
}
}
public class ForeignKeyReferenceConvention : IHasManyConvention
{
public void Apply(IOneToManyCollectionInstance instance)
{
instance.Key.PropertyRef("EntityId");
}
}
public void DBCreation()
{
FluentConfiguration config = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString("...."))
.Mappings(m =>
m.AutoMappings
.Add(AutoMap.AssemblyOf<Customer>())
.Add(AutoMap.AssemblyOf<Address>()
.Conventions.Setup(c => c.Add<ForeignKeyReferenceConvention>())
)
);
config.ExposeConfiguration(
c => new SchemaExport(c).Execute(true, true, false))
.BuildConfiguration();
}
あなたの答えは答えよりもコメントです。目的は新しいデータベースではない。 –
@ Kris-Iええ、申し訳ありませんが、コメントがあったはずです。 Btw、私は私の答えを編集した、あなたは流暢なマッピングと自動マッピングを混在させることに最も問題があります。 – cremor