我首先遇到了 EF5 代码的表创建问题。我将演示两个案例及其输出。我想知道它们之间的区别以及我如何才能成功实现我的目标。
情况1
public class User{
public int ID { get; set; }
public string Name { get; set; }
public ICollection<UserMessage> Messages { get; set; }
}
public class UserMessage{
public int ID { get; set; }
public string Message { get; set; }
public User CreatedBy { get; set; }
public ICollection<User> PermittedUsers {get; set;}
}
现在,在这种情况下,实体框架仅生成 User 和 UserMessage 类,它们仅通过 User 中的 UserMessage_ID 和 UserMessage 中的 CreatedBy_ID 相互绑定。
我很好奇的问题就在这里。每当我创建新消息时,EF5 将如何识别允许的用户?是否会为每个允许的用户复制相同的消息?或者是什么?
案例2
public class User{
public int ID { get; set; }
public string Name { get; set; }
public ICollection<UserMessage> Messages { get; set; }
}
public class UserMessage{
public int ID { get; set; }
public string Message { get; set; }
public ICollection<User> PermittedUsers {get; set;}
}
在这种情况下,我只删除了 UserMessage 实体中的 CreatedBy。现在 EF5 生成 3 个表,分别命名为:User、UserMessage、UserMessageUsers。UserMessage 和 User 之间的链接现在通过 UserMessageUsers 进行,以便我们可以轻松管理允许的用户。
如何在不破坏案例 2 的情况下将 CreatedBy 属性添加到 UserMessage 中?