我執行在.net中的N層架構,由一個實體層,DAL層,業務層和用戶界面層。項目結構爲淨N層架構 - 交叉引用層
實體除了原始字段之外還包含導航屬性。這將是一個Invoice實體,它具有一個InvoiceLines屬性,該屬性應該返回與父級Invoice實體關聯的所有InvoiceLine實體。
由於業務邏輯需要將這些業務邏輯應用到這些InvoiceLines,因爲這些業務邏輯一旦從持久性介質中檢索並且不想複製代碼,Invoice實體上的InvoiceLines屬性就會通過調用到業務邏輯中的GetInvoiceLinesByInvoiceID方法,該方法返回IEnumerable。
我的問題是這樣的 - 我不能層分離成單獨的項目,因爲該項目的實體依賴於商業項目,商業項目依賴於實體項目,從而引入交叉引用。我目前擁有生活在同一個項目中的所有3層(實體,DAL和商業),這很好,但意味着我不能在其他解決方案中共享實體。
我明白,在這樣的交叉引用層我違反原則一些,但它是非常方便的填充我的實體適用於他們的業務邏輯的導航性能。
任何人都可以請提出一個更好的辦法,或者一些方法,我可以做到這一點,同時保持我在各層獨立的項目?
乾杯
爲清楚起見,我需要用一個SQLCLR項目共享只是實體層 - 包含實體,DAL和業務整個「圖層」項目,包含了一些引用的程序通過SQLCLR不支持的,所以我不能只是添加了整個部件。 – Hoodlum