我有两个表Users
和Projects
,第三个表在它们之间创建了多对多关系User_Project
,但当我在visual studio中导入这些表时,没有User_Project
的表,但我可以从导航或类似db.Users.Where(u => u.Projects.Contains(SomeUser));
访问这些值。
但现在我只想在数据库中添加与某个项目相关的User
,我正在使用以下查询,但它不起作用。
Project pro = db.Projects.Where(p => p.ID == x).FirstOrDefault();
pro.Users.Add(usr);
db.Users.Add(usr);
error line => db.SaveChanges();
希望我解释了我的问题。
无法更新EntitySet"User_Project",因为它具有DefiningQuery,中不存在任何元素支持电流的元件活动
我在表Users.ID
和Projects.ID
中也有主键,在edmx文件中也有链接。
<AssociationConnector Association="BugMesh_Model.User_Project" ManuallyRouted="false" />
用户模型
public partial class User
{
public User()
{
this.Bugs = new HashSet<Bug>();
this.Bugs1 = new HashSet<Bug>();
this.Projects = new HashSet<Project>();
}
public int ID { get; set; }
public string UserName { get; set; }
public string FName { get; set; }
public string LName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public string Role { get; set; }
public virtual ICollection<Bug> Bugs { get; set; }
public virtual ICollection<Bug> Bugs1 { get; set; }
public virtual ICollection<Project> Projects { get; set; }
}
项目模型
public partial class Project
{
public Project()
{
this.Bugs = new HashSet<Bug>();
this.Components = new HashSet<Component>();
this.Users = new HashSet<User>();
}
public int ID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Status { get; set; }
public Nullable<System.DateTime> CreationDate { get; set; }
public virtual ICollection<Bug> Bugs { get; set; }
public virtual ICollection<Component> Components { get; set; }
public virtual ICollection<User> Users { get; set; }
}
您添加用户2次,因为它是对内存中相同位置的引用类型
你可以做
pro.Users.Add(usr);
db.SaveChanges();
请检查用户表是否有primary key