Silverlight非常棒,RIA服务可以解决很多问题但
为什么我们被迫得到;在每个型号上设置?
我了解到,如果我们有一个客户并且客户ID永远不会改变,那么Id属性应该是readonly,如果客户有一个密码需要通过一些逻辑才能设置属性应该只读,所以没有人能以错误的方式使用我的对象。
我们几乎永远不会允许的最重要的事情之一;在例如invoice.Rows上设置集合,因为它可能会创建很难找到的错误。也许我想阻止invoice.Rows.Add(顺便说一下,违反了德米特原理法)方法,因为我想在方法invoice.AddRow(row)中做一些检查;在添加行之前。
有时我们希望在服务器端解决此问题,例如在添加服务时通过服务发送发票行,但有时我们希望在客户端构建整个发票然后将其发送。我不想问服务嘿我刚刚添加了这一行我可以用大桶重新计算的总价格而且没有增值税等等。
我是唯一一个感到迷茫,或者我的目标和目标错误的人,难道我们不应该使用具有面向对象思想的银光吗?
答案 0 :(得分:1)
getter的需求源于序列化 - 您希望能够在反序列化期间进行设置。
如果您的ID未自动生成,您还希望能够为新实体设置ID。
对于Order / OrderDetail,我们通常希望Order / OrderDetail代表一个组合场景 - 您可以插入包含详细信息的订单,也可以更新订单以添加/删除/更新订单详细信息。因此,如果要进行跨越整个图形的验证,可以将验证规则附加到Order或InsertOrder,UpdateOrder等方法。
至于重新计算总价等,您当然可以在客户端上执行此操作 - 例如,在Details集合上侦听集合更改通知,并重新计算Order的Total属性。枚举详细信息和进行聚合的代码实际上可以在客户端和服务器之间共享,因此您不会重复计算逻辑。
希望有所帮助。