1

有几个简单的类:

第一课:

public class User
{
   public int UserId { get; set; }
   public string Username { get; set; }

   // ...

   public ICollection<Topic> Topics { get; set; }
}

第二类:

public class Publication 
{
   public int PublicationId { get; set; }
   public string Title { get; set; }

   / ...

   public User Author { get; set; }
}

第三类:

public class Topic: Publication 
{
   public string TopicContent { get; set; }

   // ...
}

为我的模型创建数据库后,我有以下数据库结构:

用户

用户身份

用户名

出版物

出版物编号

标题

主题内容

Author_UserId

User_UserId

如您所见,我得到两个字段 Author_UserId 和 User_UserId 在表 Publications 中具有相同的角色。

如何使用 Fluent API 或 Data Annotation 将这些字段合并为一个字段?

4

1 回答 1

1

我认为表中不可能有相同的外键列PublicationsPublication.Author并且User.Topics不能是同一个关联的端点。您可能有一个Publication不是 a 的实例Topic和对 a 的引用User

User user = new User() { Topics = new List<Topic>() };
Publication publication = new Publication();

publication.Author = user;

user.Topics.Add(???);

在 ???您无法添加publication,因为它不是Topic实例。user.Topics必须引用另一个对象,而不是publication这意味着这些端点不能属于同一个关联。

编辑

如果您只想与数据库中的单个外键列建立一个关联,则必须将Author属性从Publicationto移动Topic或让您的User类中的集合引用Publication而不是Topic

public ICollection<Publication> Publications { get; set; }
于 2011-04-15T12:03:29.433 回答