在 EF 4.3 中保存多对多关系

本文关键字:关系 保存 EF | 更新日期: 2023-09-27 18:34:54

我在保存多对多关系时遇到问题。当我运行代码时,我的映射表"dbo。用户镇"没有保存任何数据,不知道为什么?

我已经编写了我的函数,用于使用城镇列表保存用户

  public void Save(User user)
    {
        context.User.Add(user);
        context.SaveChanges();
    }

我的课程是这样的:

public class User
{
    public long UserId { get; set; }
    public String Nickname { get; set; }
    [InverseProperty("Residents")]
    public virtual ICollection<Town> Residencies { get; set; }
}

public class Town
{
    public long TownId { get; set; }
    public String Name { get; set; }
    public virtual ICollection<User> Residents { get; set; }
}

在 EF 4.3 中保存多对多关系

你需要

有映射类

public class User
{
  public long UserId { get; set; }
  public String Nickname { get; set; }
  public virtual ICollection<TownResidents> TownResidents { get; set; }
}
public class Town
{
  public long TownId { get; set; }
  public String Name { get; set; }
  public virtual ICollection<TownResidents> TownResidents { get; set; }
}
public class TownResidents
{
  public long TownId { get; set; }
  public long UserId { get; set; }
  public virtual Town { get; set; } 
  public virtual User { get; set; } 
}

您不必创建新实体来处理多对多关系。首先删除[InverseProperty("Residents")] .这是多余的。没有它,您的模型很好。

如果您的实体之间有多个"对多"关系,则需要[InverseProperty("Entity")]

我想您的问题在于如何将相关数据添加到实体中。我认为这篇文章会对你有所帮助。

斯坦格,但我第二天发现:我已经完成了清除问题的步骤:

  1. 新鲜的咖啡杯:)
  2. 清除了 vs 中的所有 cashe(清除所有项目(,肯定关闭了视觉工作室
  3. 已删除的数据库
  4. 打开VS并运行项目 =>此步骤创建的数据库
  5. 重要提示:没有更改我的代码
  6. 第二次运行项目以将虚拟数据播种到系统中
  7. 我的表已填充。

真正的挠头...