我有一个具有以下结构的课程
class Role
{
public int Id{get;set;}
public string RoleName{get;set;}
}
class User
{
public int Id{get;set;}
public virtual Role Role{get;set;}
public string Name{get;set;}
}
当我插入具有现有角色的新用户时,EF创建具有所有相同值的新角色实体期望Id。我用来插入的代码如下所示
void InsertUser(User user){
// The role of this user is already populated with values which available in DB
var context=new demoContext();
context.Users.Add(user);
context.SaveChanges();
}
注意:我尝试了附加状态
我的问题是如何通知EF使用现有实体而不是在实体拥有相同密钥时创建新实体?
// Edit
in my controller
public jsonResult Saveuser(string name,int roleId){
// populating users from controller
var role=_roleRepo.FindById(roleId);
var user =new User{ Name=name,Role=role};
}
答案 0 :(得分:0)
您可以向User类添加一个属性
public int RoleId {get; set;}
然后创建这样的用户对象:
var user = new User(){ Name = "user1", RoleId = "your existing role Id" };