我正在构建一个程序,它有两个选项:离线和在线存储选项。在线的东西不是问题,从来没有,也可能永远不会。为了使事情变得更简单,我使用实体框架和我的在线数据库来完成我的所有CRUD。
离线选项是我遇到问题的地方。我尝试添加本地SQL安装作为安装包的一部分,但它在某些计算机上失败,具体取决于我使用的SQL版本,有些人根本无法安装它...老实说,我不是想要通过这个只是为了让人们安装程序。我想做两件事:
1)存储数据。我目前认为Linq to XML是我最好的选择,没有额外的安装,但有没有办法将实体映射到程序中的类来处理XML CRUD?
2)同步数据。我想我会使用Sync Framework,但同样,在后台没有正常的数据库,这有点痛苦。
非常欢迎任何帮助/建议/评论,如果有更简单的方法可以做到这一切,请告诉我。
答案 0 :(得分:2)
我很高兴听到你为同步逻辑找到了一些东西。这有点让我夜不能寐。在这样的情况下,GUID
是你的朋友。
我从未尝试使用针对不同数据源的1 ObjectContext
。也许你可以使用OLEDB
作为你的提供者。我会走那条路。但我怀疑你会发现它比它的价值更麻烦。
我建议关注Repository Pattern。然后,您只需实施XMLRepository
和SQLRepository
即可。这可能意味着一些边界双重编码。但针对XML
与数据库的查询有其自身的顾虑。因此,根据您的具体情况,我认为违反DRY原则可能是合理的。
此外,我承认这是完全主观的,让我觉得实体框架对于可以轻松地保存在XML中的关系模型来说太过分了。如果您考虑使用LINQ-to-SQL,我只是好奇。如果是这样,是什么让你相信EF的方式呢?