1

我花了几天时间试图解决这个问题,但没有运气,我的要求非常简单——我想用数据库制作一个应用程序,它可以在大多数 PC 上运行(没有安装数据库服务器),我想使用LINQ。出于兼容性原因,我想使用.NET framework 3.5(每台 Windows 7 机器都有它)。

我尝试了 2 种方法:SQL Server CE 和 SQLite。

SQL 服务器 CE

尽管 Visual Studio 不支持紧凑版 SQL 服务器的 LINQ,但我找到了简单的解决方法 - 使用 Visual Studio 中的 metal.exe 工具生成 .dbml 文件,然后将其拖到项目中。我的应用程序在我的机器上运行良好,但是当我将它复制到其他地方时,它会崩溃。我已经从 C:\Program Files (x86)\Microsoft SQL Server Compact Edition\3.5 复制了所有 dll 并尝试了 4.0。我认为问题是我的应用程序没有在其目录中寻找 dll(引用)。我设法使用 DataSets(没有 LINQ)让它工作,我在其中手动添加对 SQLServerCE 的引用并将 CopyLocal 检查为 true。但是当我使用 LINQ 时,项目引用中没有对 SQLServerCE 的引用并且它正在工作。我不知道如何改变它。还是其他地方有问题?

SQLite

在长期使用 SQL Server CE 之后,我尝试了 SQLite。我对 .NET 中的 SQLite 支持有多差感到非常失望。我必须下载旧版本的 ADO.NET 提供程序(新版本不会将 SQLite 数据库添加到我的 Visual Studio 2010 中 - 我不明白为什么,但我用谷歌搜索它是正常的,我必须安装旧版本,然后将其替换为较新)。然后我下载了 dblinq(后来我发现这个项目已经死了),在弄乱了 dbmetal 和 dll 之后,我摆脱了 Visual Studio 中的错误并编译了我的应用程序。但我无法运行它,它总是在错误 40 时崩溃——就像没有 SQLite 服务器一样。当然我已经复制了所有的dll。即使在我的开发机器上我也无法运行它。

我很惊讶在 C# .NET 中创建简单的数据库应用程序几乎是不可能的,它不会打扰客户端与服务器等。

请问有没有人让 SQL CE 与 LINQ 一起工作,主要是让他的应用程序可分发?

4

1 回答 1

0

我建议您尝试使用 nuget Entity Framework for SQL CE 包。它将下载所有必需的程序集以使其工作。 http://nuget.org/packages/EntityFramework.SqlServerCompact/

于 2013-02-20T10:27:36.717 回答