Вопрос: Как сохранить «грязность» объектов SubSonic, когда они отправляются туда и обратно через службу Windows Communication Foundation?
А именно:
У меня есть вызов службы WCF, который возвращает коллекцию объектов SubSonic (2.2), например:
// WCF server side
public MyObjectCollection GetAllMyObjects()
{
// Retrieve a MyObjectCollection (SubSonic-generated class) from the DB
return DB.Select().From<MyObject>.ExecuteAsCollection<MyObjectCollection>();
}
и другой, который позволяет клиенту сохранять их:
// WCF server side
public void SaveAllMyObjects(MyObjectCollection objs)
{
objs.SaveAll();
}
На стороне клиента WCF я получаю эту коллекцию (через сгенерированный прокси WCF), изменяю некоторые из ее членов, а затем сохраняю:
// WCF client side
MyObject[] allObjects = myWcfClient.GetAllMyObjects();
allObjects[3].SomeProperty = "Some other value";
myWcfClient.SaveAllMyObjects(allObjects);
Однако происходит то, что вызов SubSonic «objs.SaveAll ()» ничего не сохраняет, так как он «не понимает», что objs [3] был изменен, т.е. никто не перевернул бит «грязный» в этом столбце. .
Это антипаттерн, который я реализую, или это разумный способ делать что-то? Если да, как я могу убедить SubSonic отмечать мои объекты как грязные, когда они проходят через провод WCF?