我对使用EF设计WCf服务感到困惑。
当使用WCf和EF时,我们在哪里绘制这一行以返回哪些属性以及实体不返回哪些属性。
这是我的方案
我有用户。 这是关系。
用户[1到多个]地址,用户[1到多个]电子邮件,用户[1到多个]电话
现在在webform上,在第1页,我可以编辑用户信息。说我可以在用户实体上编辑一些属性,也可以编辑地址,电话,电子邮件实体[如添加/删除和更新任何]
在第2页,我只能更新用户属性,而不能更新导航属性[地址,电子邮件,电话]。
所以,当我返回用户实体[OR DTO]时,我是否应该返回导航属性?或者客户端应该多次调用以获得导航属性。 另外,如何使用Save?比如客户端应该多次调用以保存用户和相关的entites,还是只调用一次来保存图表?
让我们说,如果我只有一个Save(用户用户)[其中用户也拥有所有相关实体] page1和page2都会调用save并将用户传递给我。但是一页1我将需要更多的信息。但在第2页我只需要用户原始属性。
所以我的问题是,我们在哪里画这条线,我们如何设计这些服务?是否在页面上设计了WCF操作及其具有的字段?
我希望我能很好地解释我的问题。
答案 0 :(得分:0)
一个经典问题 - 而且没有一个正确的答案 - 一如既往,取决于: - )
核心问题是:我是否检索到具有所有相关信息的用户(可能使其成为传输的大块数据),或者在需要时进行多次调用以检索某些部分信息。
我通常倾向于更倾向于第二种选择 - 只检索你现在需要的数据现在 - 如果你确实需要它,可以追回更多。
根据我的经验,用户通常只会使用应用的某些方面 - 因此在某些情况下,某些人可能需要核心用户信息和地址。在另一个用户中,另一个用户需要核心用户信息和他们的许可 - 或者其他。几乎没有人需要所有可用的数据。
如果加载“按需”,则会产生一些额外的开销和时间来加载数据 - 但通常情况下,您节省了大量时间来传输最不需要的数据(当你一次加载所有东西)。
再说一遍:这实际上只是我的应用程序中的“趋势” - 我没有任何冷酷的数字来支持我的观察并证明这是正确的方法。对于大多数情况来说,这只是我自己的“最佳实践”。
但是又一次:在黑魔法上找到了正确的边界:-)所以你可能只需要尝试一种方法,看看它是否有效,然后一旦你掌握了一些事实,就可能重新解决你的解决方案您的解决方案适用于现实生活。