我POCO的結構基本上是這樣的:什麼時候POCO類的擴展方法過度殺傷?
Person
其中有:Addresses
,Phones
,CaseNotes
,NoticeOfActions
。
我開始書面方式一個PersonExtension
類,我發現非常有用有,比方說,下面的例子方法:
public static Person GetPersonsPhones(this Person person, string userID)
{
using (var context = ConnectDataContext.Create())
{
var pPhones =
context.tblPhones.Where(phones => phones.PersonID == person.PersonID).Select(
phones =>
new Phone()
{
PhoneID = phones.PhoneID,
PhoneType =
new PhoneType
{
PhoneTypeID = phones.tblAdminPhoneType.PhoneTypeID,
TypeDescription = phones.tblAdminPhoneType.PhoneTypeDesc
},
PhoneNumber = phones.PhoneNumber,
Extension = phones.Extension
});
person.Phones = pPhones.ToList<Phone>();
return person;
}
}
現在我也有類似的擴展方法是人獲得地址集合。我想知道的是,如果有一點,這是有害的。由於我的環境的性質,幾乎所有的東西都適合Person
,has-a
的方式。
沒問題,或者有什麼不好的,我會從中遇到?我是否會因此而招致更多開銷?
替代似乎是簡單地傳遞Person.ID
,因爲這是我需要從DB的手機,然後將其添加到我的Person
對象,但似乎,我反正是同一件事。
我認爲這裏有一個通信故障這是最有可能是我的錯,因爲我不經常使用的東西的話語權。
在我的數據庫中有tblPerson和tblPhone。我有一個叫Person
的班級和一個叫Phone
的班級。我的Person
類有一個屬性IList<Phone>Phones
。
有問題的擴展方法是針對我的基類的子屬性的CRUD方法。
即Person.GetPhones()
填充IList<Phone>Phones
屬性Person
對象。 Person.SavePhones()
將Save
對該Person
對象的數據庫的Phones
的任何更改。
我並不認爲我在做什麼是正確的(我懷疑這是... :()只是想確保每個人都明白我是問。
另外,我使用LinqToSQL
爲DB訪問。
這種事真的應該在一個存儲庫中,而不是在你的實體類IMO中。 – tvanfosson 2012-03-19 18:45:57
當我得到**表決**時,我很欣賞一些關於我的問題出了什麼問題的指示,以便我可以在將來學會正確地做到這一點。 Just say' – 2012-03-19 19:08:06