2009-03-31 4 views
1

이 DAL을 사용하여 여러 개체가있는 비즈니스 계층과 데이터를 검색 할 수있는 기본 DAL을 구축했습니다. 데이터를 비즈니스 객체에 매핑하고 그 데이터로 무언가를 완료하면 데이터를 다시 데이터베이스에 기록하려고합니다. 일부 비즈니스 오브젝트는 많은 특성을 가지고 있으므로 비즈니스 오브젝트의 모든 값을 매개 변수로 해당 dataservice의 메소드에 전달하는 것은 불가능합니다. 내가 생각했습니다계층화 된 아키텍처에서 DB를 업데이트하는 것이 가장 좋습니다.

다른 방법 :

  1. 에서, 해당 데이터 서비스에 비즈니스 개체를 전달 매개 변수로 모든 값으로 SP가 실행합니다. - DAL (분리를 위반)에 비즈니스 객체를 전달해야하고 50 개 이상의 매개 변수가있는 SP로 끝나야하기 때문에 짜증납니다.

  2. 비즈니스 객체 내에 빈 (?) 데이터 세트를 작성하고 값을 가져오고 해당 데이터 세트를 데이터 서비스로 전달하고 dataadapter를 통해 db를 업데이트하십시오. "... WHERE 0"-SQL 문자열을 사용하여 빈 데이터 집합을 만드는 방법을 생각했습니다. 그것은 좋은 연습이 될 것입니까?

이렇게하면 처음입니다. 후자는 나에게 잘 들리지만 어쩌면 다른 좋은 접근법이 있을까요? 또는 첫번째 이유는 내가 모르는 몇 가지 이유로 더 낫습니다.

대단히 감사합니다!

[편집 :] 내가 C# Express를 사용 사촌

답변

2

DAL에 개체를 전달하십시오. DAL 레이어를 수동으로 작성하는 경우 DAL 레이어는 엔터티를 가져 와서 DB에 유지하는 방법과 데이터베이스에서 엔터티를 반환하는 방법을 알고 있어야합니다. DAL은 비 휘발성 매체에 대한 엔티티의 지속성에 관한 것입니다.

0

왜 당신이 생각 (로컬 DB를 쿼리를 지원 내 원격 하나 인 반면,) 나는 LinQ2SQL를 사용할 수에 비즈니스 오브젝트를 통과 할 때 귀하는 DAL을 분리 위반합니다. 아마도 bussines 객체를 다른 레이어로 분리하는 것을 고려해야합니다.

또한 linq2SQL을 매개 변수를 잊어 버릴 수있는 방식으로 시도해 볼 수 있습니다. 그러면 SP의 수가 줄어 듭니다.

1

LINQ를 사용하여 언급하지 않았습니다. .NET 3.5를 아직 사용하고 있지 않기 때문입니까?

또한 DAL을 일반화 할 필요는 없습니다. DAL 호출자는 비즈니스 개체의 모든 속성을 업데이트하려고하지 않습니다. 그렇습니까? 그들은 아마도 그것의 부분을 업데이트하기를 원하기 때문에 이것을하는 API를 제시해야한다. 예를 들어 Contact 객체에 주소를 추가하거나 전화 번호를 업데이트하기를 원할 수도 있습니다. 호출자가 실제로 수행하려고하는 작업과이를 수행하는 데 필요한 별도의 메소드의 수를 절충해야합니다.

+0

LinQ는 C# express (LinQ 만 로컬 DB 만 허용)를 사용하기 때문에 Linx를 사용하지 않습니다. (SQL Express) 서버는 원격 서버입니다. –

+0

죄송합니다. Entity Framework가 작동합니까? 로컬 데이터베이스를 사용하여 개발 한 다음 동일한 스키마로 원격 DB에 연결 문자열을 변경하는 것 같습니다. –

0

데이터 액세스 레이어가 매우 일반적인 경우가 아니면 비즈니스 개체를 전달하는 것이 어떻게 좋을까요?

나는 객체를 직렬화하고 저장된 proc에 XML을 전달하는 팬이지만, 아마 소수에 속할 것이다.

+0

XML을 전달하는 것은 SQL의 현재 상태는 모르지만 SQL 2000은 한 번에 특정 수의 XML DOM 만 처리 할 수 ​​있습니다. 개체를 Xml로 저장하지 않으면 Xml로 데이터 계층에 전달하지 않습니다. – JoshBerke

+0

SQL Server 2005 및 2008은 여전히이 방법으로 제한되어 있다고 생각하지 않습니다. 2005에서는 XML 데이터 유형과 nvarchar (max)가 도입되었습니다. –

+0

네, 2005 이상은 XML에 대한 기본 지원을 제공합니다. 나는 여전히 전체 객체 또는 객체 목록을 삽입하는 가장 좋은 방법 (BCP 외)을 찾았습니다. 객체를 변경하면 DAL을 건드리지 않고 저장된 proc을 변경하십시오. –

1

DAL은 비즈니스 개체와 특정 데이터 표현 간의 매핑에 관한 것이어야합니다. 따라서 도메인 객체와 함께 작동하는 저장소 패턴을 사용하면 데이터베이스가 아닌 다른 지속성 구현으로 전환 할 수 있습니다.

DAL의 메서드에 너무 많은 매개 변수를 전달해야 할 필요가 있다고 염려하고 2 개 또는 3 개의 값만 전달해야하는 예제를 언급하십시오. 그렇다면 메서드의 인수로 전달하는 것이 합리적입니다. 더 많은 값을 전달하려는 경우 저장하려는 값의 하위 집합으로 인터페이스를 정의하면됩니다. 이렇게하면 메서드가 처리 할 정보를 명확하게 지정하고 있습니다.

위와는 관계없이 너무 복잡하여 여러 가지 조합으로 끝내기가 어렵 기 때문에 방법을 너무 구체적으로 지정하지 마십시오.

관련 문제