我在n層概念上掙扎。起初,我有這個概念,我的域實體將在我的3層共享(DAL,BLL,Service)。但最近被告知這是一個古老的概念,並沒有真正遵循SOLID概念。而是被告知爲每個圖層創建和對象。N層對象參數
Service
ObjectService
Business
ObjectBus
DAL
Object
哪一個是服務依然依賴於業務,業務依賴於dal等。但我不確定如何傳遞我的對象或如何創建它們。
讓我的數據層說我有一個person.cs具有以下屬性
public class Person:Base
{
public string firstName { get; set; }
public string lastName { get; set; }
public string middleName { get; set; }
}
在我的業務對象,我應該像這樣創建
Boolean CreatePerson(userrole r,string f, string l, string m);
的業務方法或者我應該做的像這樣的東西
Boolean CreatePerson(PersonHandler pmo);
我在哪裏有一個班PersonHandler
public class PersonHandler
{
public UserRole r { get; set; };
public Person p { get; set; };
}
在這種情況下,userrole只是業務層需要的額外屬性。我喜歡爲業務層創建一個對象,因爲我可以更容易地更改與此對象關聯的所有屬性,但是我覺得我仍然需要訪問域實體(Person),但我被告知這很糟糕。但是,如果我爲每個對象創建一組屬性,我只是覺得這是多餘的。如果將來我在DAL換了我的人,那是不是意味着我必須改變上升的每一個參數?
這裏的樣本更多的在我的文件夾結構
的高清這是我DAL結構。
很明顯,使用'Boolean CreatePerson(userrole r,string f,string l,string m)'這樣的方法是個壞主意。使用DAL層clases作爲BL中的輸入參數應該不成問題。 – Vladimir
你怎麼做你的數據訪問? entity frameowrk,nhibernate,orm?你在做cqrs嗎? – Fran
我正在使用實體框架 – Jseb