嗨,
我正在學習用EF爬,我也有EF CRUD的基本認識,但現在我有有一個導航屬性(我懷疑表是橋表),所以我需要在橋表中添加值,我想我可以通過導航屬性來實現。
插入到表橋實體框架
問題解釋:
原始分DB圖
部分EF模型圖
代碼我寫道:
protected void BtnAddUser_Click(object sender, EventArgs e)
{
DBEntities entities = new DBEntities();
var usr = new User();
//I thought I would add an Roles object into usr.UserRoles.Add(usrRoles);
//but UserRoles have only two fields ,RoleTypeId and UserId
//var usrRoles = new Roles()
//{Id=0,RoleDescription="dfdfdf",RoleType="WebSite Admin"};
usr.UserName = TxtbxUserName.Text;
usr.Password = TxtBxPassword.Text;
usr.Email = TxtbxEmail.Text;
usr.CreateDate = DateTime.Now;
usr.LastActivityDate = DateTime.Now;
usr.IsEnabled = true;
//What to Add in the .Add method
usr.UserRoles.Add(
entities.User.AddObject(usr);
int result = entities.SaveChanges();
LblMsg.Text = result == 1 ? "User created successfully." : "An error occured ,please try later.";
entities.Dispose();
}
更新(我至今嘗試過):
我取從角色表「網站管理員」的角色,並把它變成ObjectContext.UserRoles.Add(UserRoleWebsiteAdmin);
所以這是我的代碼一樣,
//Fetch WebsiteAdmin from Roles
var userRole = from usrRole in entities.Roles
where usrRole.Id == 1
select usrRole;
usr.UserName = TxtbxUserName.Text;
//same old code of usr.Property = someTextBox
//I have tried to type cast it LinqtoEntities result into Roles
usr.UserRoles.Add((Roles)userRole);
異常產生
PS:讓我知道你是否需要更多的澄清。
什麼是UserRoles?您在圖表描述的模型中沒有這樣的導航屬性。您只需要將「角色」添加到「角色」屬性。 –
@LadislavMrnka'UserRoles'是橋(或聯結)表,在用戶創建時,用戶必須被賦予一個角色(角色),角色將從'角色'表中引用。 –
但該表格不在您的模型中。您不需要它,只需將'Role'添加到'user.Roles'中,EF將處理它。 –