2016-06-01 122 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