有個問題糾結很久了,在網上搜索、群里討論,找了些源碼 最后都沒結果,希望得到各位的指點。問題描述較長,請耐心看完哈!
?
典型的一對多關系
商品類:Goods ? 商品類別:GoodsCls
?
思路一:
在Goods類中有個屬性:public string GoodsClsID{ get; set; }
直接是Goods這個類中通過這個屬性關聯到該商品的分類。
?
問題1:感覺不OO,軟件中類與類的關系體現得不明顯,客戶端(如:UI層)在獲取關聯屬性的時候又要去查一次數據庫,這樣感覺不是在寫程序,而是在寫SQL語句,比如 在前臺獲取一個商品類的列表,然后綁定到TreeView上,然后點擊一個節點獲取一個對應分類下的商品列表時,所獲取的列表與這個商品分類 根本沒有任何連系,只是單純的通過ClsID去獲取一個表。
?
思路二:
在Goods類中有個屬性:public GoodsCls Cls{ get; set; } 直接關聯到一個 商品分類的實體
同時在GoodsCls類中有個屬性:public List ListGoods{ get; set; } 直接關聯到一個 商品集合
這是我覺得理想的做法,我也相信都應該這么做。客戶端首先獲得或者創建一個商品。只要.(點一下)就可以獲得他的分類信息。同理,當獲得或者創建一個商品分類的時候 只要點一下 就可以獲得該類別下面的商品信息列表。
?
問題2:
當我將一個商品添加進一個列表的時候 應該是
Goods goods1 = ..... ;? // 獲取或者實例化一個商品
goods1.Cls = goodscls1; //設置商品的 分類屬性,意思是把一個商品加入到 某個分類
當我做goods1.Cls=goodscls1的時候,goodscls1.List應該自動加入goods1
意思就是當我 把一個商品加入到某個分類的時候,對應的商品分類的 商品集合里 應該自動的 加入這個商品
反過來說 當我 在一個商品分類的商品集合屬性中加入一個商品時,被加入的這個商品的 商品分類 屬性應該自動的等于 這個商品分類。這里有點繞。。希望您看明白了!
?
首先這里出現了循環該如何解決呢?
再者一個軟件系統中有 實體間有大量的這種關系。有沒有好的辦法來維護這樣的關系。
簡單三層中 這樣的關系維護何時處理? 在那一層處理? 關系太復雜了。
?
我考慮過在實體的get方法中去觸發一個事件,然后在創建或者獲取這個實體的時候去處理它的事件來實現延遲加載。比如在 bll層中 根據ID獲取一個商品的時候 綁定事件 調用GoodsClsBll的GetModelByID的方法去獲取關聯的商品類別 實體,但是同理 在 GoodsCls類中 又要引用GoodsBll類的GetListByCls方法去獲取某一個商品類別的列表。出現循環引用了又怎么辦呢。。
- 1 回答
- 0 關注
- 375 瀏覽
添加回答
舉報
0/150
提交
取消