在 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; }
}
你需要
有映射类
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")]
。
我想您的问题在于如何将相关数据添加到实体中。我认为这篇文章会对你有所帮助。
斯坦格,但我第二天发现:我已经完成了清除问题的步骤:
- 新鲜的咖啡杯:)
- 清除了 vs 中的所有 cashe(清除所有项目(,肯定关闭了视觉工作室
- 已删除的数据库
- 打开VS并运行项目 =>此步骤创建的数据库
- 重要提示:没有更改我的代码
- 第二次运行项目以将虚拟数据播种到系统中
- 我的表已填充。
真正的挠头...