0

データベースが最初のエンティティフレームワークを備えた mvc プロジェクトがあります。プロジェクトには 3 つのテーブルがあります。

ユーザー >>> UsersInRoles <<< 多対多の関係を持つロール。

以下の私のCreateUserコード。

public bool CreateUser(string email, string password, string birthday,string firstname,string lastname)
    {
        bool result;
        var dogumgunu = Convert.ToDateTime(birthday);
        var sifre = FormsAuthentication.HashPasswordForStoringInConfigFile(password, "sha1");
        var confirmation = CreateConfirmationToken(email);
            try
            {
                var user = new User
                {
                    UserName = email,
                    Password = sifre,
                    UserJoinDate = DateTime.Now,
                    UserBirthDay = dogumgunu,
                    UserConfirmationToken = confirmation,
                    UserID = Guid.NewGuid(),
                    MemberFirstName = firstname,
                    MemberLastName = lastname
                };
                var role = new Role
                {
                    RoleName = "Client"
                };
                user.Roles.Add(role); //problem is here!!!!!!!!!
                _bb.Users.AddObject(user);
                _bb.SaveChanges();
                result = true;
            }
            catch (Exception)
            {

                result = false;
            }


        return result;
    }

このコードでは、新しいユーザーを作成しています。そして、私は役割を追加しています。ただし、このコードには、Roles テーブルに新しい Role が含まれています。私はこれをしたくありません。UsersInRoles テーブルに新しいユーザーを追加したいだけです。なにが問題ですか?返信ありがとうございます。

4

1 に答える 1

0

次の 2 行を入れ替えます。

_bb.Users.AddObject(user);
user.Roles.Add(role);

AddObjectオブジェクトグラフ全体を状態に変換するためAddedです。後でロールを追加すると、その状態はそのまま残りUnchangedます。

そして、最初にデータベースからロールを取得するかRole、既存の .xml のみを持つオブジェクトを作成する必要がありますRoleId。(いわゆるスタブ エンティティ)。

new Roleだからあなたができる代わりに

var role = _bb.Roles.Single(r => r.RoleName == "Client");
于 2013-05-28T08:38:07.227 に答える