こんにちは皆さん、
私は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();
}
更新(これまでに試したこと):
ロールテーブルから「Webサイト管理者」ロールを取得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:さらに説明が必要な場合はお知らせください。