【问题标题】:saving many to many relationship in EF 4.3在 EF 4.3 中保存多对多关系
【发布时间】:2012-05-22 15:19:04
【问题描述】:

我无法保存多对多关系。 当我运行代码时,我的映射表“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; }
}

【问题讨论】:

    标签: c# entity-framework-4 entity


    【解决方案1】:

    你需要有映射类

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

    【讨论】:

    • 我不确定我是否这样做,因为 ef 为我生成映射表,我不想创建新对象和新表,因为 EF 已经为我这样做了。
    • 这是正确的方法,你也可以检查类似你的问题。 stackoverflow.com/questions/10690467/…
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      Stange,但我第二天发现: 我已经完成了解决问题的步骤:

      1. 新鲜的咖啡杯:)
      2. 清除所有兑现 vs(清除所有项目),确定关闭 Visual Studio
      3. 已删除数据库
      4. 打开 VS 并运行项目 => 这一步创建了数据库
      5. 重要提示:没有更改我的代码
      6. 第二次运行项目,将虚拟数据植入系统
      7. 我的表已填充。

      真正的头颅......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-08
        • 1970-01-01
        相关资源
        最近更新 更多