を上書きするか、条約でデフォルトの動作を変更することができます。」引用からであることを(流暢)NHibernateは:「参考文献と同様に、外部キーAUTHOR_IDデフォルト、あなたはKeyColumn方法..withそれを
を流暢なnhibernateマッピングガイド。この例ではAuthorクラスの主キーに正しい(列)名を使用するのではなく、なぜこれを行うのか理解できません。
public class SupplierMap : ClassMap<Supplier>
{
public SupplierMap()
{
Table("Suppliers");
LazyLoad();
Id(x => x.SupplierID, "SupplierID");
Map(x => x.CompanyName).Not.Nullable();
Map(x => x.ContactName);
Map(x => x.ContactTitle);
Map(x => x.Address);
Map(x => x.City);
Map(x => x.Region);
Map(x => x.PostalCode);
Map(x => x.Country);
Map(x => x.Phone);
Map(x => x.Fax);
Map(x => x.HomePage);
HasMany(x => x.Products).KeyColumn("ProductID").Inverse().Cascade.All();
}
}
を、製品のマッピングは次のとおりです:
私が知っている、それは私自身のマッピングでここにあるよう.KeyColumn使用することで一つの解決策、(私の質問は、このコードの後に来ている)
public class ProductMap : ClassMap<Product>
{
public ProductMap()
{
Table("Products");
LazyLoad();
Id(x => x.ProductID);
References(x => x.Supplier, "SupplierID");
Map(x => x.ProductName).Not.Nullable();
Map(x => x.QuantityPerUnit);
Map(x => x.UnitPrice);
Map(x => x.UnitsInStock);
Map(x => x.UnitsOnOrder);
Map(x => x.ReorderLevel);
Map(x => x.Discontinued).Not.Nullable();
}
}
私の質問は、よりエレガントな方法ですか? id(ProductIDとProduct_ID)の商品表に2つの列が表示されてしまったのはかなり残念です。前述のように、これは上記のようにKeyColumn( "ProductID")で修正されました。プロダクトマッピングや設定でもこれを設定できる方法はありますか?私は、「慣習でデフォルトの動作を上書きする」ことを理解しているとは思わない。おそらく答えがどこにあるのだろう。あなたのFKSはすべてその形式ObjectNameID
である場合、何をやっているのほとんどは、あなたがして、
これは、質問のひどいタイトルです。将来これを見つけようとしている人を想像してください。 –
私はstackoverflow自身の検索が非常に良いとは思わない、私は人々がGoogleを使用して答えを見つけると思う - それは彼らがスタックオーバーフローになるように意図されている...と私はタイトルがGoogleで大きな違いを作ることを疑う。 –