我们正在审查我们在工作中的一些实践——我们现在正在研究的具体事情是使用基于 Flex 的客户端和 .NET Web 服务进行 Comms 的最佳方法。
我们的典型方法是首先根据需求对交互进行建模,模拟一些 XML 消息并对其进行完整性检查,将它们转换为 XSD,最后在每一端构建与 XML 进行序列化的类。
这工作正常,直到我们访问数据库,然后像 Join Tables 这样的东西开始破坏我们所做的所有工作,以简化客户端。
我们已经尝试使用 LINQ to SQL 和其他 OR 映射器来解决这个问题,但是它们都没有真正解决问题而不引入更严重的问题。
所以,真正的问题是:如果不将 RDBMS 视为简单的对象存储,是否有更好的方法来处理复杂的数据需求,而无需编写大量的转换代码?
我想我正在寻找的灵丹妙药是知道什么是 Join 表以及如何处理它,并且仍然允许我为 Flex 生成“不错的”序列化 XML 并保留强大的 .NET 类型。
如果它可以分析每种方法所需的 SQL,生成存储过程并使用它们,则可以加分。但这可能要求太多了:)
注意重新“加入表”:
我们对此的定义是你有一个表,它有两个或多个外键作为它自己的主键。
例如:
Photos (PK PhotoID) <- PhotoTags (PK FK PhotoID, PK FK TagID) -> Tags (PK TagID)
当 Flex 客户端获得一个 Photo 对象时,它可能还会获得一个包含所有标签的列表。所以,这可能看起来像这样:
<照片 id="3"> <标签> <tag name="公园" /> <tag name="悉尼" /> </tags> </照片>
相反,我见过的 OR 工具给了我们:
<照片 id="3"> <照片标签> <照片标签> <tag name="公园" /> </照片标签> <照片标签> <tag name="悉尼" /> </照片标签> </照片标签> </照片>