我知道這個職位是舊的,但它仍然沒有答案,所以這裏有雲:
這裏的關鍵是,你的模型是有缺陷的,海事組織。
組應該是一個域對象,具有簡單的只讀集合'persons'(members?)。檢索並維持該組的責任屬於GroupRepository,該組加載來自持久性存儲的數據並重新構建該對象。
例如:
public class Group
{
private Collection<Person> _persons;
public Group(Collection<Person> persons)
{
if (persons == null)
throw new ArgumentNullException("persons");
_persons = persons;
}
public IEnumerable<Person> Persons
{
get { return _persons; }
}
public void AddPerson(Person p)
{
if (p == null)
throw new ArgumentNullException("p");
_persons.Add(p);
DoSideAffect();
}
}
public class GroupRepository
{
public Group FindBy(Criteria c)
{
// Use whatever technology (EF, NHibernate, ADO.NET, etc) to retrieve the data
var group = new Group(new Collection<Person>(listOfPersonsFromDataStore));
return group;
}
public void Save(Group g)
{
// Use whatever technology to save the group
// Iterate through g.Persons to persist membership information if needed
}
}
使用依賴注入框架(Spring.NET,MEF,團結,等等),並創建一個IGroupRepository接口,可以在應用程序代碼注入到檢索並堅持您的組域對象。
XmlSerializer如何使用專用字段? – 2010-10-17 19:33:24
@Yaron;啊,不,它不能。 DataConractSerializer *可以*雖然。正如protobuf-net「v2」一樣,如果你不介意二進制。我知道後者支持無屬性模型('我寫了')。 – 2010-10-17 19:36:00
@Yaron - 另一種方法是專用的DTO層。 – 2010-10-17 19:37:36