1

나는 층의 분리를 가지고있다 - 웹>은 BLL 그리고 엔티티UI/BL Layer에서 EntityState를 하나씩 설정하는 방법/필요 여부 다음과 같이

참고 문헌 = 앱

BLL -

UI 비즈니스 로직 (하는 검증) => 참조 DAL 그리고 엔티티

엔터티 - 데이터 캐리 (POCO) => 참조 없음

DAL - 데이터 컨텍스트 EDMX => 참조 없음

이것은 절대적인 분리가 된 첫 번째 프로젝트이므로 매우 기본적인 질문이 있습니다. 개체 @ UI 수준의 EntityState (추가/수정/삭제됨)를 설정하려면 어떻게해야합니까? 위의 구조로 인해 DataContext에 액세스 할 수 없기 때문입니다.

데이터 형식은 Entity State (데이터 형식)를 설정해야한다는 것을 알고 있기 때문에 위임 사항입니다.

나는 많은 질문을 읽었지만 아무도이 의심을 분명히하지 못했습니다. 하나의 다른 방법은 사용자 지정 State 속성 @ Entities 수준을 유지하는 것입니다.

나는 datacontext가 DAL로 제한되어야한다고 읽었습니다. EntityState를 @ BLL/UI로 설정하는 것은 나쁜 습관입니까?

저는 이런 종류의 아키텍처로 EF를 처음 사용했습니다. 제발 도와주세요.

나는 다음 그래서 질문을 겪었지만 명확하지 않았다, 할 수는 SOC에 대한 지식의 나의 부족에 기인한다 :

1. Which layer should create DataContext?

2. Why DbContext object shouldn't be referred in Service Layer?

3 . If Entity Framework/DbContext is the DAL/Repository, where does it fit within 3-tier architecture?

4. Entity Framework and layer separation

4. How to update entities which are modified outside the DbContext?

편집 1 : 난 아직도 그들의 EntityState.I는 거의 중첩 된 계층 구조를 설정하는 DAL 다시 객체 계층 구조를 통해 루핑에 대한 걱정 한 가지. 평면 구조체에서 같은 작업을 수행해야한다면 UI에서 객체를 채우고 context.savechanges()를 호출해야합니다.

하지만 여기서 @UI를 설정하고 나중에 EntityState.Modified @DAL로 변환 할 수있는 entity에 대해 더미 상태 속성을 만들었습니다. 이것이 올바른 접근 방법입니까?

+0

:

public DataContext Get() { return _dataContext ?? (dataContext = new DataContext()); } 

이의 당신이 Update(T entity) 방법이 저장소에 있다고 가정 해 봅시다을, 그 다음은 상태를 처리하는 곳입니다 UI에서 엔티티 상태를 설정해야하는 이유를 이해하지 못합니까? 그게 무슨 뜻 이니? – SOfanatic

+0

@SOfanatic 엔티티를 나타내는 그리드가 있고 두 번째 행의 데이터를 수정한다고 가정합니다.이 엔티티가 업데이트되어야한다는 것을 알기 위해 내 컨텍스트에 대해 더티 (수정 됨)로 표시해야합니다. 맞습니까? EF에 대한 나의 경험이 매우 제한적일 때 나는 잘못 될 수있다. – Pavitar

+0

나는 그것을 처리하는 한 가지 방법이 될 것이라고 생각하지만, 그것이 최선의 방법인지는 확실하지 않다. 그냥 분명히하기 위해서 그리드는 단지 하나의 단일 엔티티가 아닌 엔티티들의 집합입니다. – SOfanatic

답변

2

귀하의 DAL 만 (DataContext) 간접적으로 액세스 할 수 있어야합니다. DataContextBaseRepository에 삽입 된 ContextFactory에 의해 생성/검색되어야합니다.어딘가에 당신의 팩토리 클래스에서 당신이 DataContext 검색하는 방법이 있어야합니다 난

public void Update(T entity) 
{ 
    _dataContext.Entry(entity).State = EntityState.Modified; 
} 
+0

이것은 데이터 컨텍스트의 여러 인스턴스에 대한 또 다른 문제를 해결하는 데 도움이되었습니다. 제 질문 1 번을 확인하십시오. – Pavitar