0

如果我有两个具有 Id 的表,whish 是一个自动生成的int(种子),无论如何我在这两个表之间有一个多对多的关系,这需要另一个表。

现在,我做了一个“试运行”来为前两个表生成项目,然后再保存它们,这很完美。问题是当我尝试为第三个表中的(多对多关系)生成项目时。在保存项目之前,前两个表中的所有 Id 都将设置为 0,将项目添加到关系表时我没有问题,保存表时出现问题,因为关系表的 Id 为 0。

有没有办法克服这个问题?就像分配一个临时值,该值将在保存之前自动更改为关系表中的真实 ID?

4

1 回答 1

0

出于同样的原因,我选择不使用 EF 提供的默认种子方法 (AddOrUpdate),但我宁愿编写自己的种子方法。

现在,如果我想建立关系,我没有明确使用 ID,而是使用导航属性。

想象一下场景:

public class User
{
public int Id {get;set;}
public string Name {get;set;}
public virtual IList<Roles> Roles { get;set;}
} 

public class Role
}
public int Id {get;set;}
public string Name {get;set;}
public virtual IList<User> Users {get;set;}
}

一旦您点击保存更改,这样做将为用户和角色以及关系的值播种:

Role admin = new Role
{
Name = "Administrator"
};


Role basic = new Role
{
Name = "Basic"
};

User user = new User
{
Name = "John",
Roles = new List<Role>()
{
   basic,
   admin
}
}

db.Users.Add(user);
db.SaveChanges();
于 2013-08-23T14:25:53.013 回答