2012-12-14 4 views
0

우리는 현재 sp 및 udf를 사용하여 웹 서비스를 통해 클라이언트로 보내어 XML 문서를 생성합니다. 이전에 ORM (Entity and Open Access)을 사용했지만 단 하나의 클래스 (테이블)와 직접 상호 작용했습니다. 여러 테이블로 이동해야하는 데이터가 있다면 코드에서 분리하여 데이터가 속한 ORM 클래스 (테이블) 만 업데이트하면됩니다.복잡한 엔티티 개체 만들기

좀 더 복잡하게 될지 궁금합니다. 어떻게 든 ORM에 이러한 모든 필드의 집합 인 복잡한 개체를 만들 수 있습니까? 즉, 필자는 복잡한 orm 객체의 생성자에게 원하는 레코드 키를 전달합니다. 객체는 모든 테이블에서 필요한 정보를 수집하고 나에게 객체를 반환합니다. 그러면 객체를 XML로 직렬화하고 전송할 수 있습니다.

나는 ORM 또는 DB의 어딘가에서 모든 조각을 모으기위한 논리가 있어야한다는 것을 알고 있으며, 실제로는 입력을 찾고 있습니다.

답변

1

여러 테이블의 데이터로 구성된 개체를 원한다면 모든 테이블을 .edmx 파일에 추가하기 만하면됩니다. 거기서부터 내가 원하는 것을 얻는 수업을 만들 수 있습니다. 1 : 1 페어링이 필요하지 않습니다. TableA의 기본 키를 기반으로 개체를 만드는 내 방법 내에서 당신은 할 수 있습니다;

Obj GetObj(string primaryKey) 
    { 
     dataBase context = new dataBase(); 
      var obj = (from a 
        in context.TableA 
        where a.Id == primaryKey 
        select a); 
      var otherObj = (from b 
          in context.TableB 
          where b.Id == a.ForeignKey 
          select b); 

     Obj foo = new Obj(); 

     foo.Id = a.Id; 
     foo.SomethingElse = a.Somthing; 
     foo.FromB = b.Id; 
     foo.AnInt = (int)b.count; 

     return foo; 
    } 

몇 가지 변경 사항을 저장하려면;

void AddNewObject() 
    { 
     dataBase context = new Context; 
     TableA a = new TableA(); 
     TableB b = new TableB(); 

     a.Id = this.Id; 
     a.OtherField = this.OtherField; 
     b.Key = this.BKey; 
     b.SomeInt = this.SomeInt; 

     context.AddObject("TableA", a); 
     context.AddObject("TableB", b); 

     context.SaveChanges(); 
    } 

은 물론이 내가이 포함되지 않은 일부 오류 처리가 필요하지만 개념은 표준 EntityObject < 때부터 그 차이가 없다 -> 테이블 매핑을. 일반 매핑 중 일부를 유지 한 다음 클래스를 빌드하는 것이 더 간단하다고 생각합니다.

+0

역으로 작동합니까? 오우만에게 내 복잡한 물건을 주면서 저주를 내리면 찢어 질 것인가? I.E. 양방향 데이터 맵의 라인을 따라 뭔가. – GPGVM

+0

@ user1278561 개체 속성을 테이블 및 해당 속성에 매핑하는 또 다른 메서드를 작성해야합니다. 작은 예제를 추가하겠습니다. – evanmcdonnal