0

新しい Entity Framework CTP5 コードの最初のビットを調べ始めたところです。

次の非常に単純なエンティティがあります。

User
 int Id;
 Account Account;

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

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

Users テーブルには 2 つの列がAccountIdありAccountId1、これらの列に生成された名前を制御する方法はありますか。また、実際にはテーブルにプロパティのUserId列があると予想されますが、代わりに参照がテーブルにあるようです。すべてのキーを持っていないのは本当にいいことです:)AccountOwnerAccountsUsersAccountId...n

4

1 に答える 1

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 プロパティの名前をまだ変更したい場合は、Column 属性を使用します。

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

または再び流暢な API を使用します。

config.Entity<User>().Property(u => u.Id).HasColumnName("Id");
于 2010-12-13T18:06:12.527 に答える