在我的域模型實體對象我有一個實體對象,如下所示:與輔助性
public class Group
{
public int idGroup { get; set; }
public string Description { get; set; }
}
我對這個對象存儲庫:
public class GroupRepository : IGroupRepository
{
public Group LoadGroup(int idGroup)
{
//imitation of SQL data reader
Group g = new Group();
g.idGroup = Convert.ToInt32(r["idTipoGrupo"]);
g.Description = Convert.ToString(r["Descricao"]);
return g;
}
}
但現在我需要得到通過我創建的存儲庫中的新功能從數據存儲中獲取有關組對象的額外信息,這裏是我需要的字段:
public bool HasChildGroups { get; set; }
public int ChildGroupsCount { get; set; }
public bool HasDeals { get; set; }
public int DealsCount { get; set; }
這些屬性在我看來就像一個「服務」或「助手」屬性,我並不打算在我的應用程序中的任何地方使用它們,只有幾次,但我需要它們。我能想到的最簡單的事情是,我將這些「服務」屬性添加到我的Group對象,並在我的存儲庫中創建了一個方法來填充它們。但我認爲做錯了,因爲它是實體,我不需要它們在這裏。那麼我應該在哪裏保留這樣的「服務」對象呢?我一定要創建一個從Group
這樣繼承一個新的類:
public class GroupHelper : Group
{
public bool HasChildGroups { get; set; }
public int ChildGroupsCount { get; set; }
public bool HasDeals { get; set; }
public int DealsCount { get; set; }
}
或者,我應該考慮使用一些數據傳輸對象? 你會如何解決這個問題? 任何幫助表示讚賞。
您的域模型似乎沒有反映出兒童與父母組之間的關係,也不反映組與交易之間的關係。這是正常的嗎?你是否期望利用知識庫並在每次訪問某個組的父母或孩子時發出數據庫查詢? – guillaume31
@ guillaume31:是的,我沒有包含任何額外的屬性和實體,在我的情況下它們是不相關的,因爲我只需要事先知道關於Group實體的一些事情,而不管將來的父 - 子連接如何,這就是爲什麼我使用這個對象的術語如「服務」,「幫手」,「DTO」。 –