【发布时间】:2017-02-10 02:06:15
【问题描述】:
我正在使用 Entity Framework 设计代码触发迁移,并且当一个对象具有与其自身相同类型的 List 时会出现一些问题。假设我有一个User 对象,它的List<User> 作为它的Friends:
public class User
{
[Key]
public int UserId { get; set; }
// some other stuff
public List<User> Friends { get; set; }
}
问题是 EF 为用户寻找外键,并在找不到任何外键时尝试创建一个:
AddColumn("dbo.Users", "User_UserId", c => c.Int());
我试图避免同时使UserId 成为键和外键,那么这里有什么好的做法?
【问题讨论】:
-
UserId不能是外键,它是一对多的关系。您需要一个单独的用户好友表,其中包含将用户 ID 与其好友 ID 连接起来的条目。 -
您需要为好友和用户提供单独的表格。在您的情况下,实体框架正试图找出建立关系的外键。它从同一个表中找到唯一主键的 UserId。你无法避免它。
标签: c# entity-framework foreign-keys relational-database