如果我有了一個映射到SQL Server標識列ID的域模型,什麼是POCO看起來像一個包含字段?如何在代表SQL Server中的Identity字段的POCO上實現ID字段?
候選人1:允許任何人設置和獲取的ID。我不認爲我們希望任何人從SQL表中設置除存儲庫以外的標識。
public class Thing {
public int ID {get;set;}
}
候選人2:允許某人在創建時設定的ID,但我們並不知道ID直到我們創建的對象(工廠創建一個空白的事情對象,其中ID = 0,直到我們堅持的話)。如何在持續後設置ID?
public class Thing {
public Thing() : This (ID: 0) {}
public Thing (int ID) {
this.ID = ID
}
private int _ID;
public int ID {
get { return this.ID;};
}
候選3:設置ID的方法?
不知怎的,我們就需要讓庫設置ID而不讓消費者去改變它。有任何想法嗎?這是在吠叫錯誤的樹嗎?我們是否將對象發送到Repository,保存它,扔掉它,然後從加載的版本創建一個新對象並將其作爲新對象返回?
非常好的答案。這也意味着領域模型,視圖模型,存儲庫,工廠和任何服務將存在於相同的命名空間(模型)中,這將在任何視圖或控制器命名空間(MVC模式)之外,因此它們將不能改變它。如果我有這個正確的話,那麼這是一個很好的答案。 – 2010-06-01 03:48:10