在C#中保存和比较SQLCe .sdf文件

时间:2017-03-20 14:36:41

标签: c# sql wpf mvvm architecture

我有一个桌面WPF / MVVM应用程序需要使用Entity Framework将科学数据保存/保存到SQLCe数据库。

要求是用户应该能够保存/导出/打开文件,就像它们是简单的word / excel / txt文件一样,这意味着仅仅因为系统保存到数据库,这应该对用户隐藏。用户需要能够与其他人共享这些“保存文件(实际上只是.sdf)”,这样他们就可以将其他人“保存文件”导入他们的桌面客户端实例,并将他的结果与其他人的结果进行比较。

我试图找出如何抽象出一个事实,即存在一个用于存储的数据库,同时允许使用打开文件对话框(例如)的自由使用户能够导出他的数据文件,以便其他人可以将其导入桌面应用程序的另一个实例。

还需要将两组或更多组数据相互比较。这可能表现为一个用户将.sdf数据库中的数据与另一个用户的.sdf文件中的另一组数据进行比较。

对于如何处理此问题的任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:0)

实体框架允许您使用包括SQL CE文件的数据库(目前我自己将其用于SQL CE文件): https://msdn.microsoft.com/en-us/library/aa937723(v=vs.113).aspx

连接字符串包含文件路径,因此当您使用“打开”对话框时,您将检索路径并将其传递给打开数据库连接的上下文。

我使用Code First,它允许您编写定义数据库结构的C#配置文件(参见上面的链接)

使用SQLCE存在一些复杂性,例如多线程(EF本质上不是线程安全的),以及分离/重新附加实体。

为了比较文件,我想你可以创建两个上下文并编写方法来循环并比较两者之间的实体。稍微棘手的部分将构成匹配(是ID,匹配属性还是子实体)以及如何为新实体做什么。不是非常困难,但可能需要一些思考。

我还使用存储库模式,它抽象出诸如CRUD操作之类的操作。这使您可以在以后使用多种文件格式或切换格式。例如,我将来可能会切换到XML。