私は2つのクラスを持っています
public class Product
{
public Guid Id { get; set; }
public string ProductDetails { get; set; }
}
public class SpecialProductDetails
{
public Guid Product_Id { get; set; } // PK and FK to Product class
public string SpecialName { get; set; }
public string SpecialDescription { get; set; }
public virtual Product Product { get; set; }
}
SpecialProductDetails
Product
クラスで1 対 1 でマップされ、オプションです。同じ PrimaryKey と ForeignKey を共有します。
Fluent API では、この関係を次のようにマッピングしています (内部SpecialProductDetails
)
public SpecialProductDetails()
{
HasKey(p => p.Product_Id);
HasRequired(p => p.Product).WithMany().HasForeignKey(p => p.Product_Id).WillCascadeDelete(true);
}
これにより、データベースを生成しようとするとこのエラーが発生します
\tSystem.Data.Entity.Edm.EdmAssociationEnd: : 関係 'SpecialProductDetails_Product_Source' のロール 'SpecialProductDetails_Product_Source' で多重度が無効です。依存ロールはキー プロパティを参照するため、依存ロールの多重度の上限は '1' でなければなりません。
EF Code First で列を PK および FK として設定するにはどうすればよいですか?