如何使用EF插入具有现有角色对象的用户?

时间:2014-06-06 09:34:52

标签: c# linq entity-framework

我有一个具有以下结构的课程

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};




}

1 个答案:

答案 0 :(得分:0)

您可以向User类添加一个属性

public int RoleId {get; set;}

然后创建这样的用户对象:

var user = new User(){ Name = "user1", RoleId = "your existing role Id" };