나는 작업하고있는 새로운 구현을 위해 Linq to SQL을 사용 해왔다. 나는 약 5000 줄의 코드를 가지고 있으며 솔리드 데모에서 약간의 방법을 사용하고있다. 필자는 Linq to SQL에 대해 지금까지 매우 만족해했습니다. 도구는 훌륭하고 꽤 고통 스럽습니다. 그리고 DAL을 빠르게 설치하고 실행할 수 있습니다.Linq to SQL 아키텍처를 보여주세요!
그건 그렇고, 내가 계속해서 몇 번이나 계속해서 반복하는 몇 가지 주요 단점이 있습니다. 즉, DAL과 비즈니스 계층 간의 관심사를 어떻게 처리하고 서로 다른 데이터 컨텍스트로 저글링을 수행 할 것인가.
다음은 내가 사용해온 아키텍처입니다. 제 저장소는 모든 데이터 액세스를 수행하고 Linq를 SQL 객체로 반환합니다. 각 Linq to SQL 객체는 IDetachable 인터페이스를 구현합니다.
partial class PaymentDetail : IDetachable
{
#region IDetachable Members
public bool IsAttached
{
get { return PropertyChanging != null; }
}
public void Detach()
{
if (IsAttached)
{
PropertyChanged = null;
PropertyChanging = null;
Transaction.Detach();
}
}
#endregion
}
나는 내가 객체와 끝났어요 (그리고 이론적으로 모든 자식 개체에서 분리해야) 할 때 "분리"내 저장소에서 DAL 작업을 할 때마다이를 제거하려면 : 일반적인 구현은 다음과 같습니다 DataContext의 문맥.
내가 말했듯이, 이것은 꽤 잘 작동하지만, 엉덩이에 큰 고통을 줄 수있는 가장자리 경우가 있습니다. 예를 들어, 내 Transaction 객체에는 많은 PaymentDetails가 있습니다. 이 없더라도 해당 컬렉션에있는 PaymentDetails는 여전히 DataContext의 컨텍스트에 연결되어 있습니다! 따라서 업데이트하려고하면 (Attach()) 개체 및 다음 SubmitChanges()로 업데이트 할 때 나는 두려워하게됩니다 "Attach가 시도되었거나 새로운 개체가 아닌 개체를 추가하려고 시도했을 수 있습니다. 다른 DataContext. 이것은 지원되지 않습니다. " 메시지.
어쨌든, 나는이 기술이 좋은 도박 이었다는 것을 의심하기 시작했습니다. 누구나 공유 할 의사가있는 괜찮은 아키텍처가 있습니까? 정말이 기술을 사용하고 싶지만 시간의 1/3을 소비하는 것처럼 느껴집니다. 디버깅은 지체 된 단점입니다!
질문이 어디에 있습니까? –
실제로는 질문이 아니기 때문에 커뮤니티 위키가되어야합니다. – Donnie
죄송합니다, 예, 아마도 위키에 있어야합니다. –