EF 데이터 저장 문제 2 중 "이 두 대상 간의 관계를 정의할 수 없습니다. 왜냐하면 서로 다른 ObjectContext 대상에 부가되기 때문입니다."

4754 단어 context
"이 두 대상 사이의 관계를 정의할 수 없습니다. 서로 다른 ObjectContext 대상에 첨부되어 있기 때문입니다. 이것은 EF에서 한 쌍의 다중 관계 테이블에서 외부 키가 있는 클래스를 데이터베이스에 저장하는 오류입니다.
나는 원래 JAVA로 개발한 것으로 한 쌍의 다중류와 류의 관계를 습관적으로 처리했는데 C#에서도 이렇게 처리했다.다음은 간단한 일대다 관계 C#의 구현(선 데이터베이스, 후 VS 코드 생성)입니다.
public class ObjectA{

   public int ID{set;get;}  

   public int objectbid{set;get;}// 

   public ObjectB B{set;get;}//VS 

}

public class ObjectB[

  public int ID{set;get;}  

  // ObjectA 

}

업무 논리에서 습관적으로 ObjectB를 찾은 다음에 다음과 같은 형식으로 값을 부여한다.
public class FormNew:Form{

    //…… 

    public void Button1_Click(object sender, EventArgs e){

        ObjectB b = XXB();// 

        ObjectA a = new ObjectA();

        a.B = b;

        XXA.Save(a);// DBContext a, !!!

    }

}

인터넷에서 검색하면 대개 이전에 XXB 방법을 호출한 DBContext와 XXA이다.Save ()의 DBContext가 일치하지 않습니다.구체적인 원리를 저도 잘 몰라요(초보자). 제가 이해할 수 없는 것은 이 종류에 ID가 저장되어 있는데 일치해야 하는데 왜 저장하지 못하게 해요!!그래도 방법을 강구해서 이 문제를 해결해야 한다.본인의 테스트를 통해 상기와 같은 관계 대응 형식을 사용하지 않고 아래의 방법으로 해결할 수 있다.
public class FormNew:Form{

    //…… 

    public void Button1_Click(object sender, EventArgs e){

        ObjectB b = XXXXX();// 

        ObjectA a = new ObjectA();

        a.objectbid = b.id;//

        XXXXX.Save(a);// DBContext a, 

    }

}

public class XXXXX{

    public void Save(ObjectA a){

         DBContext db = new DBContext();// , DBConText

         ObjectB b = db.objectB.where("...");// DBConText B

         a.b = b;// , ObjectB DBContext ObjectA DBConText 。

      db.objecta.AddObject(a);

    }

  

}

내 생각을 분명히 말했는지 모르겠다.기념으로 남기고 나중에 문제가 생기면 다시 봅시다.

좋은 웹페이지 즐겨찾기