EF 4.3.1。User
およびBox
エンティティを定義しました。各ボックスは、ユーザーに割り当てられている場合と割り当てられていない場合があります。
私が達成したいのは、クラス内のプロパティとクラス内のプロパティを持つことOwnBox
です。
データベースでは、 (と関係があります )に外部キーを定義しました。
流暢な API との関係を定義するために、次のクラスを定義しました。 User
Owner
Box
OwnerId
Boxes
Boxes.OwnerId
Users.UserId
public partial class User
{
public int UserId {get; set;}
public virtual Box OwnBox { get; set; }
}
public partial class Box
{
public int? OwnerId { get; set; }
public virtual User User { get; set; }
}
次に、 の Mapping クラスでBox
、関係を次のように定義しました。
this.HasOptional(t => t.User).WithOptionalDependent(d => d.OwnBox).
Map(m => m.MapKey("OwnerId")).WillCascadeOnDelete(true);
しかし、プロジェクトを起動すると、エラーが発生しました:
指定されたスキーマは無効です。エラー: (56,6): エラー 0019: 型の各プロパティ名は一意である必要があります。プロパティ名 'OwnerId' は既に定義されています。
OwnerId
そのため、最初に列 を忘れるように EF に指示する必要がありました。
this.Ignore(t => t.OwnerId);
これでプロジェクトは正常に動作します。しかし、これが良いアプローチであり、外部キーの関連付けを使用した CRUD 操作ですべてが正常に機能するかどうかはまだ疑問です。