实体框架2相同的两个实体之间的关系
本文关键字:实体 两个 关系 之间 框架 | 更新日期: 2023-09-27 18:18:51
我计划有一个这样的模型:
public class Message{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int MessageId { get; set; }
public string Category { get; set; }
[Required]
public string Subject { get; set; }
public string MessageBody { get; set; }
// Sender IS ASSOCIATION TO UserProfile 0..1
[ForeignKey("Sender")]
public virtual int? UserId { get; set; }
public UserProfile Sender { get; set; }
// Recipients IS ASSOCIATION TO UserProfile 0..n
public virtual ICollection<UserProfile> Recipients { get; set; }
}
所以消息模型与UserProfile模型有两个不同的关联。我该如何实现呢?我在MVC web应用程序中使用实体框架6。谢谢!
您可以在映射中添加两个语句:
HasOptional(c=>c.Sender).WithMany().HasForeignKey(c=>c.UserId);
HasMany(c=>c.Recepients).WithMany(c=>c.IncomingMessages);
我想你在消息和接收者之间有多对多的关系,在发送者和消息之间有一对多的关系。
您应该将此代码添加到覆盖方法
中的dbcontext类中protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Message>()
.HasOptional(c=>c.Sender).WithMany().HasForeignKey(c=>c.UserId)
.HasMany(c=>c.Recepients).WithMany(c=>c.IncomingMessages);
}