我刚刚开始查看新的Entity Framework CTP5代码的第一位。
我有以下非常简单的实体。
User
int Id;
Account Account;
Account
int Id;
User AccountOwner;
ICollection<User> Users;
因此,帐户拥有所有者(用户)并且可以拥有许多用户。这些关系被转换为数据库中的Accounts
表和Users
表。
在Users表中我得到两个列AccountId
和AccountId1
,有没有办法控制这些列的生成名称。另外,我实际上希望UserId
表上的AccountOwner
属性有Accounts
列,但似乎引用位于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)
如果您遵循intellisense,您也可以使用约束属性连接FK属性。
要重新命名FK属性,如果它们仍然不是您想要的,请使用Column属性,例如
User
[Column(Name="Id")]
int Id;
或者再次使用流畅的API:
config.Entity<User>().Property(u => u.Id).HasColumnName("Id");