1

我在保存多对多关系时遇到问题。当我运行代码时,我的映射表“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; }
}
4

3 回答 3

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; } 
}
于 2012-05-22T15:25:21.060 回答
0

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

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

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

于 2012-05-22T15:47:08.620 回答
0

斯坦奇,但我第二天发现:我已采取措施解决问题:

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

真正的头条...

于 2012-05-23T13:38:25.030 回答