2010-12-13 14 views
0

新しいEntity Framework CTP5コードの最初のビットを調べ始めました。Entity Framework CTPコード最初の列の名前と関係

私は以下の非常に単純なエンティティを持っています。

User 
int Id; 
Account Account; 

Account 
int Id; 
User AccountOwner; 
ICollection<User> Users; 

したがって、アカウントには所有者(ユーザー)があり、多くのユーザーを持つことができます。これらの関係は、Accountsテーブルに変換され、Usersテーブルに変換されます。

私は2つのコラム、AccountIdAccountId1を取得していますが、これらの列の生成された名前を制御する方法はありません。また、AccountsテーブルでAccountOwnerプロパティのUserId列が実際に存在すると予想されますが、代わりにUsersテーブルに参照があるようです。すべての鍵についてはAccountId...nを持っているのではなくて本当にいいです:)

+0

特定のユーザーが複数のアカウントを持っていない理由? –

答えて

2

ここにはいくつかのことがあります。

お互いに1対1の関係を持つユーザとアカウントの場合、あなたが望んでいない側面を選択しています。流暢なAPIを使って、あるいは属性を使って伝えることができるように、あなたがそれを伝えなければ、それを置く側を知る方法はありません。片側をオプションにし、もう片方を必要に応じてFKを相手側に強制することができます。

User 
... 
[Optional] 
Account Account; 

Account 
... 
[Required] 
User AccountOwner; 

また、あなたが流暢なAPIを使用することができます。

config.Entity<User>().HasOptional(u => u.Account).WithRequired(a => a.AccountOwner) 

あなたはその上でインテリセンスに従った場合は、あまりにもFKのプロパティを配線する制約プロパティを使用することができます。

FKプロパティの名前を変更するには、好きなものでない場合は、列属性を使用します。流暢なAPIと

User 
[Column(Name="Id")] 
int Id; 

か、再度:

config.Entity<User>().Property(u => u.Id).HasColumnName("Id"); 
関連する問題