【问题标题】:Using XML to store data, how can I use Entity Framework?使用 XML 存储数据,如何使用实体框架?
【发布时间】:2016-08-09 02:06:51
【问题描述】:

我正在构建一个程序,它有两个选项:离线和在线存储选项。在线的东西不是问题,从来没有,也可能永远不会。为了让事情更简单一点,我使用实体框架和我的在线数据库来完成我所有的 CRUD。

离线选项是我遇到问题的地方。我尝试添加本地 SQL 安装作为安装包的一部分,但它在某些计算机上失败,具体取决于我使用的 SQL 版本,有些人根本无法安装它......老实说,我没有想要经历这些只是为了让人们安装程序。我想做两件事:

1) 存储数据。我目前认为 Linq to XML 是我最好的选择,无需安装任何额外的东西,但是有没有办法将实体映射到程序中的类来处理 XML CRUD?

2) 同步数据。我想我会使用 Sync Framework,但同样,后台没有正常的数据库,这有点痛苦。

非常欢迎任何帮助/建议/cmets,如果有更简单的方法来完成这一切,请告诉我。

【问题讨论】:

  • 是否允许安装有时在线运行,有时离线运行?
  • 是的。该安装设计为离线运行,但具有在线同步。同步位我已经有一种方法可以开始工作,但想要更具体的东西。

标签: c# xml database entity-framework local-storage


【解决方案1】:

很高兴听到您对同步逻辑有所了解。这就是让我彻夜难眠的一点。 GUIDs 是您遇到这种情况的朋友。

而且我从未尝试使用 1 ObjectContext 来针对不同的数据源。也许您可以使用OLEDB 作为您的提供者来完成一些巧妙的事情。我会沿着那条路走一点。但我怀疑你会发现它的麻烦多于它的价值。

我建议关注Repository Pattern。然后你可以实现一个XMLRepository 和一个SQLRepository。这可能意味着一些边界双重编码。但是针对XML 和数据库的查询有它们自己的顾虑。因此,根据您的具体情况,我认为违反DRY 原则可能是合理的。

另外,我承认这完全是主观的,我觉得实体框架对于可以轻松保存在 XML 中的关系模型来说太过分了。我很好奇您是否考虑使用 LINQ-to-SQL。如果是这样,是什么让你选择了英孚的道路?

【讨论】:

  • 实际上是使用 Linq-to-SQL 让我产生了使用 EF 的想法。对在线数据库使用 Linq to SQL 是小菜一碟,知道以后可以使用概念性 EF 定义数据库连接对我来说似乎更好,也许我可以稍后将两者合并?但似乎老式的“两次编码”似乎是使用两个持久数据存储的方式。编码很有趣!
  • 非常感谢,会努力的! :)
猜你喜欢
  • 2012-09-29
  • 2014-08-16
  • 2018-08-31
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多