문제

LINQ-SQL을 SubMitchAnges (), insertOnsubmit () 등으로 만들기위한 가장 좋은 계층 인 레이어

예를 들어, 두 개의 테이블 부모와 자식이 있다고 가정 해 봅시다. 어린이 테이블에는 부모에 외국 키가 있습니다 (Child Table에는 Parentid Column이 있습니다). 부모 객체와 자식 객체를 DB에 삽입하고 싶습니다.

LINQ-SQL을 사용하면이 작업을 수행 할 수 있습니다.

Parent parent = new Parent();
Child child1 = new Child();
Child child2 = new Child();
//assign values to parent data members
//...

parent.Childs.Add(child1);
parent.Childs.Add(child2);

using (DataContext db = new DataContext())
{
   db.Parents.InsertOnSubmit(parent);
   db.SubmitOnChanges();  
}

프레젠테이션 계층 코드를 데이터 액세스 계층과 혼합하고 있습니까? 그렇다면 사이에 비즈니스 계층 객체로 어떻게해야합니까?

알려주세요. 감사.

도움이 되었습니까?

해결책

프레젠테이션 계층 내에서 바로 데이터에 액세스하는 것이 가장 좋은 방법은 아닙니다.

Datacontext에 액세스하는 방법이있는 작가 클래스를 구현할 수 있습니다.

Parent parent = new Parent();
Child child1 = new Child();
Child child2 = new Child();
//assign values to parent data members
//...

parent.Childs.Add(child1);
parent.Childs.Add(child2);    

using (var parentWriter = new ParentWriter())
{
  parentWriter.Insert(parent)
}

그런 다음 래퍼 클래스에서

public class ParentWriter : IDisposable
{
  private DataContext _dc;

  public ParentWriter()
  {
    _dc = new DataContext();
  }

  public void Insert(Parent parent)
  {
    _dc.Parents.InsertOnSubmit(parent);
    _dc.SubmitOnChanges();
  }

  //IDisposable Members
  //...
}

이것은 상당히 단순화 된 예이며 테스트되지 않았습니다. 최근 프로젝트에서 비슷한 디자인을 사용하여 데이터로 수행하는 작업에 따라 데이터 액세스를 분할하는 특정 작가 및 리더 클래스가 있습니다.

다른 팁

L2S를 사용하여 본격적인 N-Tier 프레임 워크를 구축했습니다. 우리는 뚜렷한 UI 계층, 비즈니스 로직 계층 및 데이터 액세스 계층이 있습니다. 우리의 엔티티는 비즈니스 프로세스 및 검증을 위해 UI에서 비즈니스 계층으로 전달 된 다음 DB 운영을 위해 DAL에 전달됩니다. 반대도 마찬가지입니다. 클라이언트는 BLL을 통과하는 엔티티, DAL을 통해 고객에게 다시 요청합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top