如果我有两个具有Id的表,那么whish是一个自动生成的int
(种子),无论如何我在这两个表之间有多对多关系需要另一个表。
现在,我做了一个"干运行"在保存之前为前两个表生成项目,这非常有效。问题是当我尝试在第三个表中为(多对多关系)生成项目时。在保存项目之前,前两个表中的所有ID都将设置为0,当向关系表添加项目时我没有问题,保存表时会出现问题,因为关系表的Ids为0。
有没有办法克服这个问题?比如分配一个临时值,它会在保存之前自动更改为关系表中的真实ID吗?
答案 0 :(得分: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();