1

我有這樣的實體。我讓他們simplier此示例:帶有數據訪問層的複雜搜索

public class City 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

public class Street 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public int CityId { get; set; } 
    public City City { get; set; }  
} 

public class Address 
{ 
    public int Id { get; set; } 
    public int CityId { get; set; } 
    public City City { get; set; } 
    public int StreetId { get; set; } 
    public Street Street { get; set; } 
    public string House { get; set; } 
} 

public class Company 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public int AddressId { get; set; } 
    public Address Address { get; set; } 
} 

public class Category 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public int ParentId { get; set; } 
    public Category Parent { get; set; } 
    public List<Category> Children { get; set; } 
} 

public class Product 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public int CategoryId { get; set; } 
    public Category Category { get; set; } 
    public int CompanyId { get; set; } 
    public Company Company { get; set; } 
} 

我有架構是這樣的:

  1. 應用
  2. WCF服務又名DbManager包裝器
  3. DbManager又名數據訪問層

第一個問題是:如何定義DbManger接口?我需要什麼方法?

建議的解決方案:爲一個操作創建一個方法。 SearchProductByCompany,SearchProductByCategory等。如果我這樣做,我會看到一些性能和架構問題。

第二個問題是:如何按城市和類別搜索產品?

建議解決方案:如果讓我選擇提出質疑1解決方案,我想這樣的問題的答案計劃:

  1. 呼叫DAL獲得地址選定的城市(IES)的列表。
  2. 致電DAL獲取所選地址列表的公司列表。
  3. 調用DAL以獲取所選公司列表的產品列表。
  4. 調用DAL按類別過濾所選產品列表。

而所有這些查詢從應用程序到WCF到DbManager和回來。

第三個問題是:也許我需要法非常深刻的硬選擇邏輯的產品和他的所有相關類與它們的相對類?

看起來像複雜的搜索查詢。

一般的:
我看到了很多關於DAL的鏈接和答案,但是大多數只是抽象的和理論上的,而且很多都是關於ORM的。我瞭解ORM是什麼,DAL不是ORM不寫ORM。我需要更多的樣本來定義數據訪問層,DAL中真實還是不重用的方法。使用具體的dal實現鏈接到良好的開源項目會很好。

回答