2016-06-01 55 views
1

我的上下文是=> enter image description here将数据插入到多对多实体框架中。我该怎么做?

经由实体框架代码第一使用该模型,在数据库 数据表变得=>

1)用户表

enter image description here

2)作用表

enter image description here

3)的UserRole表 - 一个新的链接表创建自动

enter image description here

模型用户是=>

enter image description here

为角色模型是=>

enter image description here

and my O Data qu ERY用于单用户插入记录/角色表工作正常

enter image description here

现在,我应该写什么查询,当我想插入记录的UserRole表

能有人有任何想法

+2

EF(作为ORM)的要点是将数据库抽象出来,让你处理* objects *而不是表/行/列。这就是为什么你不必问自己:“我如何'INSERT'到'UserRoles'表中?”而是“我如何将一个新的'Role'与'User'关联起来,现在答案更加清晰:'user.Roles.Add(role)'或'role.Users.Add(user)'(EF knows后面的两条语句是同一关系的两端,因此它们实际上是相同的) – haim770

+0

如何使用简单的Odata客户端使用它? 当我想添加新用户时,我喜欢以下 等待metadataManagementClient.For ().Set(新用户{Id =新Guid(),Name ='Test'})。InsertEntryAsync(); 现在如何将新角色与用户关联?请详细说明 ? – Neo

回答

1
// Fetch the user. 
var user = await metadataManagentClient.For<User>().FirstOrDefaultAsync(x => x.Name == "Test"); 


// If you want to add a new role. 
var newRole = new Role() 
{ 
    Name = "My new role" 
}; 
user.Roles.Add(newRole); // Adds new role to user. 

// If you want to add an existing role 
var existingRole = await metadataManagentClient.For<Role>().FirstOrDefaultAsync(x => x.Name == "My Existing Role"); 
user.Roles.Add(existingRole); // Adds existing role to user. 

// Save changes. 
metadataManagentClient.SaveChanges(); 

或者

await metadataManagentClient.SaveChangesAsync(); 

优米ight也想设置ID。但要小心new Guid(),因为它会生成一个空的GUID。你可能想要的(如果你不使用IDENTITY)是Guid.NewGuid()

+0

简单Odata客户端没有像SaveChangesAsync和SaveChanges这样的方法 – Neo