在EF 4.3中保存了多对多的关系

时间:2012-05-22 15:19:05

标签: c# entity-framework-4 entity

我在保存多对多关系时遇到问题。 当我运行代码时,我的映射表“dbo.UserTown”没有保存任何数据,为什么会这样?

我已经编写了我的功能,用于保存带有城镇列表的用户

  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; }
}

3 个答案:

答案 0 :(得分:0)

您需要有映射类

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; } 
}

答案 1 :(得分:0)

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

如果您的实体之间存在多个“多对多”关系,则需要

[InverseProperty("Entity")]

我猜您的问题在于如何将相关数据添加到实体中。我认为article会帮助你。

答案 2 :(得分:0)

Stange,但我发现第二天: 我已经采取措施来解决问题:

  1. 新鲜的咖啡杯:)
  2. 清除vs中的所有cashe(清除所有项目),确保关闭Visual Studio
  3. 删除了数据库
  4. 打开VS并运行project =&gt;这一步创建了数据库
  5. 重要提示:未更改我的代码
  6. 第二次运行项目以将虚拟数据植入系统
  7. 我的桌子已填充。
  8. 真正的头脑...

相关问题