0

我正在尝试在 Azure Web 和 Worker 角色中使用 SQL Server CE 数据库并将其与 EF 一起使用。我已经安装EntityFramework.SqlServerCompact(v4.3.6)并且似乎在工人角色上工作正常。(将数据放入数据库。)

虽然当我尝试从我的 Web 角色中读取数据时,它似乎无法识别由辅助角色创建的数据库,并创建了一个新数据库。

数据库似乎是由工作角色创建的\Debug\roles\WorkerRoleName\approot.

创建数据库的最佳位置是什么?(Web 角色的 App_Data ?还是 blob 存储位置?)以及如何配置 EF 以便无论我从哪个角色询问数据,它看起来都在同一个地方?

如果 SQL Server CE 无法做到这一点,我还有哪些其他选择?(不想使用 SQL Azure 或表存储)

谢谢

4

1 回答 1

2

我认为您会发现 SQL Server CE 不适合您,因为它是本地安装的数据库。我不确定您是否已经测试过您的工作角色的多个实例,但您应该会发现这些实例不会看到彼此的数据(每个实例都是自己的虚拟机)。SQL Server CE 将其数据库文件(.sdf文件?)存储在实例的本地文件夹中。如果没有设置某种类型的文件共享,您将无法从安装它的实例以外的任何地方访问此文件。在探索 SMB 之类的东西之前,您应该考虑 SQL Server CE 的工作原理,以及它是否甚至支持多个数据库引擎尝试读取/写入同一个文件。

我不确定您为什么要避免使用 SQL 数据库(以前称为 SQL Azure),因为它是 db-as-a-service 并且可以由您的所有角色实例访问,无论是 Web 还是工作人员(或从其他任何地方) )。表存储是完全不同的东西,而不是基于 SQL 的数据存储,所以这是有道理的。

另一种选择是考虑在虚拟机中运行 SQL Server,因为 SQL Server 支持多个客户端,就像 SQL 数据库一样。虚拟机库中有一个 SQL Server 映像,您可以使用它来启动数据库。然后,您可以使用虚拟网络或 IP-ACL 端点保护从云服务到 SQL 虚拟机的连接,只允许您的云服务的 IP 地址访问它。

于 2013-07-28T13:03:42.673 回答