Linq to SQL, C#.Linq To SQL - DAL 레이어를 DLL로 노출시키지 않고 응용 프로그램 계층을 동적으로 검색합니다.
나는 3 개의 층이있다 : DAL, BL, 신청. 각 테이블에 대해 BL의 검색 기능을 구축하여 해당 함수가 응용 프로그램 계층에서 'where'매개 변수로 가져 오도록하려고합니다. 이 접근법의 장점은 각 테이블에 대해 하나의 함수이므로 클라이언트는 5 가지 방법을 제공하는 자유롭고 동적 인 방법으로 검색 할 수 있습니다. 그의 수색을 제한한다.
내 응용 프로그램 계층에 내 DAL 계층의 DLL을 제공해야합니다. 그렇게하는 것은 문제를 해결하기위한 좋은 접근 방법이 아닙니다. 사용자가 검색 기능을 구축하여 동적으로 검색을 제한하도록 유도하는 것입니다. 응용 프로그램 계층에 내 DAL 계층에 대한 DLL이있는 경우 응용 프로그램 계층에서 ContextObject를 선언하고 내 데이터베이스에 잘못된 작업을 수행 할 수 있습니다.
이 문제를 해결하려면 어떻게해야합니까?
감사합니다. Stav Alfi.
업데이트 1 : 아시다시피
의 Linq는 각 테이블에 클래스를 구축 SQL로. 응용 프로그램 계층에서 Sql 클래스에 Linq를 사용할 수 없으므로 응용 프로그램 계층에 DAL DLL을 노출하고 싶지 않습니다. 내가 찾은 해결책은 Linq와 Sql 클래스를 동일하게 보이도록 클래스를 생성하는 것이므로 응용 프로그램 계층에서 사용할 수 있습니다. BL 계층은 이러한 클래스를 생성하기위한 resposnibol입니다. 응용 프로그램 계층에서 Linq를 SQL 클래스로 사용하지 않기 때문에 응용 프로그램 계층에 IQueryable (BL 계층의 모든 함수 결과는 응용 프로그램 계층의 클래스로 변환 됨)을 제공 할 수 없습니다.
업데이트 2 :
는 SQL에 Linq에이 LinqClientDB.designer.cs을 가지고 내가 응용 프로그램 계층에 DAL 층을 노출하는 경우가 해당 클래스
[global::System.Data.Linq.Mapping.DatabaseAttribute(Name="ClientDB")]
public partial class LinqClientDBDataContext : System.Data.Linq.DataContext
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Clients")]
public partial class Client : INotifyPropertyChanging, INotifyPropertyChanged
을 구축, 응용 프로그램 층 LinqClientDBDataContext 클래스에 액세스 할 수 있습니다. 이것은 좋은 접근 방법이 아닙니다. 그래서 BL 계층에서 DAL.Client 클래스를 BL.Client 클래스로 변환하지만 클라이언트의 테이블에서 동적 검색을 할 수 없습니다. 내가 무엇을 할 수 있을지?
이 LINQ-to-SQL 또는 Entity Framework가 있는지 확인하십시오. –
DAL에 엔티티를 팔아서 길을 찾을 수 없으면 DAL에 엔티티를 배치하는 것은 재 패턴이 아닙니다. 그렇지 않다면 @ pswg의 대답은 –
Linq to SQL을 사용하고 있습니다. Linq to SQL은 각 테이블에 적합한 클래스를 구축합니다. –