3
问:如何保留SubSonic对象在Windows Communication Foundation服务中来回传送时的“肮脏”?带WCF的往返SubSonic DAL对象
机智:
我有一个WCF服务调用返回亚音速的集合(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);
会发生什么,但是,是亚音速“objs.SaveAll()”调用不会保存任何内容,因为它没有“意识到”是OBJ文件[3]已被修改,即没有人翻转“脏“的位。
这是我正在实施的反模式,还是这是一种明智的做事方式?如果是这样,我如何说服SubSonic在穿过WCF电线时将我的物体标记为脏?