私はこれをEFで機能させる方法を見つけようとしています。私には2つのエンティティEmployee
とがありUser
ます。User
にオプションのマッピングがあるようにする必要がありますEmployee
。マッピングがある場合、それは1:1になります。
基本的に、このシステムには従業員だけでなく外部ベンダーもアクセスできますが、ログオンを管理するために1つのテーブルが必要ですUsers
。
流体構成のEFでこの現実をどのように定義しますか?
私はこれをEFで機能させる方法を見つけようとしています。私には2つのエンティティEmployee
とがありUser
ます。User
にオプションのマッピングがあるようにする必要がありますEmployee
。マッピングがある場合、それは1:1になります。
基本的に、このシステムには従業員だけでなく外部ベンダーもアクセスできますが、ログオンを管理するために1つのテーブルが必要ですUsers
。
流体構成のEFでこの現実をどのように定義しますか?
シンプルな流暢な構成を設定するだけです。
modelBuilder.Entity<User>()
.HasOptional(u => u.Employee)
.WithRequired(e => e.User);
または逆の順序で:
modelBuilder.Entity<Employee>()
.HasRequired(e => e.User)
.WithOptional(u => u.Employee);
EF は、Employess の PK をユーザーへの FK として使用します。これは、EF が 1 対 1 の関係を正しく使用するための必須要件です。Data アノテーションの場合、Employee の PK をナビゲーション プロパティForeignKey
とペアリングする属性でマークするだけで十分です。User
public class Employee {
[Key, ForeignKey("User")]
public int Id { get; set; }
public virtual User User { get; set; }
}
public class User
{
...
public virtual Employee Employee { get; set; }
}
このチュートリアルが役立つ場合があります。