0

次のシナリオがあります。System.InvalidOperationExceptionエラーが発生しないようにするにはどうすればよいですか。

SomeClass.cs:

using (var eo = new MyEntities())
{
   targetRole = (from p in eo.UserRoles 
                 where p.Code == 2 
                 select p).FirstOrDefault();
}

var user = new User
{
   UserName = userName,
   Password = txtPassword.Text.Trim(),
   UserRole = targetRole
};

AnotherClass.AddObject(user);

AnotherClass.cs

public static void AddObject(object poco)
{
    using (var eo = new MyEntities())
    {
        eo.AddObject("Users", poco);
        eo.SaveChanges();  //<--- Exceptions Thrown.
    }
}
4

1 に答える 1

5

私は自分で答えを見つけました。 targetRole オブジェクトを現在のコンテキストにアタッチする必要があります。

AnotherClass.cs :

public static void AddObject(object poco)
{
   using (var eo = new MyEntities())
   {
       eo.UserRoles.Attach(targetRole); //<-- the magic
       eo.AddObject("Users", poco);
       eo.SaveChanges();  //<--- it works like a charm. Hoorah
   }
}
于 2012-11-17T13:16:05.837 に答える