0

我刚开始研究新的 Entity Framework CTP5 代码。

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

User
 int Id;
 Account Account;

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

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

在 Users 表中,我得到两个列,AccountId并且AccountId1,有没有办法控制这些列的生成名称。此外,我实际上希望表格上有一个属性UserId列,但似乎引用在表格上。没有所有的钥匙真的很好:)AccountOwnerAccountsUsersAccountId...n

4

1 回答 1

2

这里发生了几件事。

在用户和帐户彼此具有 1:1 关系的情况下,它会选择您不想要的一方。如果您不告诉它,它就无法知道将其放在哪一边,因此您可以使用 fluent 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;

或者再次使用 fluent API:

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