实体框架CTP代码第一列命名和关系

时间:2010-12-13 09:15:38

标签: c# entity-framework code-first ef-code-first

我刚刚开始查看新的Entity Framework CTP5代码的第一位。

我有以下非常简单的实体。

User
 int Id;
 Account Account;

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

因此,帐户拥有所有者(用户)并且可以拥有许多用户。这些关系被转换为数据库中的Accounts表和Users表。

在Users表中我得到两个列AccountIdAccountId1,有没有办法控制这些列的生成名称。另外,我实际上希望UserId表上的AccountOwner属性有Accounts列,但似乎引用位于Users表上。对于所有键都没有AccountId...n非常好:)

1 个答案:

答案 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)

如果您遵循intellisense,您也可以使用约束属性连接FK属性。

要重新命名FK属性,如果它们仍然不是您想要的,请使用Column属性,例如

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

或者再次使用流畅的API:

config.Entity<User>().Property(u => u.Id).HasColumnName("Id");