私はそれにカテゴリプロパティを持つ製品クラスがあるとしましょう。外部キー用に2つの列が作成されるのはなぜですか?
public class Product : Entity<int> // Base class defines the Id
{
public virtual ProductCategory Category { get; set; }
}
マッピングファイルには、これは私のデータベースに2つの列を作成しProductCategoryId
とCategoryId
をSchemaExport.Create
を使用して
public class ProductMap : ClassMap<Product>
{
public ProductMap()
{
Id(x => x.Id);
References(x => x.Category).Nullable();
}
}
簡単です。私の慣習を考えると、CategoryId
のみが存在するはずです。どちらもヌル入力可能ですが、CategoryId
のみが使用されます。何があっても、ProductCategoryId
は常にnullであり、それに外部キー制約のある列です。
これはなぜですか? CategoryId列を使用してすべてがうまく動作することが分かる限り、実際にコードに問題は見つかりません。カテゴリの有無にかかわらずクエリ/保存/更新ができます。データベースを調べていないと他の列が存在することはわかりませんが、それが何であるかわからないときは列があるのが好きではありません。そこに理由があるのですか、null可能な参照をマッピングした方法に何か問題がありますか?