Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Azure Web和工作人员角色中共享SQL Server CE数据库_C#_Entity Framework_Azure_Sql Server Ce - Fatal编程技术网

C# 在Azure Web和工作人员角色中共享SQL Server CE数据库

C# 在Azure Web和工作人员角色中共享SQL Server CE数据库,c#,entity-framework,azure,sql-server-ce,C#,Entity Framework,Azure,Sql Server Ce,我正在尝试在Azure Web和Worker角色中使用SQL Server CE数据库,并将其与EF一起使用。我已经安装并似乎在工人角色上工作得很好。(将数据放入数据库。) 虽然当我尝试从Web角色读取数据时,它似乎无法识别由worker角色创建的数据库,并创建了一个新的数据库 数据库似乎是由位于\Debug\roles\WorkerRoleName\approot的工作者角色创建的 创建数据库的最佳位置是什么?(Web角色的App_数据?或blob存储位置?)我如何配置EF,使其看起来在同一位

我正在尝试在Azure Web和Worker角色中使用SQL Server CE数据库,并将其与EF一起使用。我已经安装并似乎在工人角色上工作得很好。(将数据放入数据库。)

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

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

创建数据库的最佳位置是什么?(Web角色的App_数据?或blob存储位置?)我如何配置EF,使其看起来在同一位置,无论我从哪个角色请求数据

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


谢谢

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

我不确定您为什么要避免使用SQL数据库(以前称为SQL Azure),因为它是db-as-a-service,您的所有角色实例都可以访问它,无论是web还是worker(或者从其他任何地方)。表存储是完全不同的,不是基于SQL的数据存储,所以这是有意义的


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

@marc_s Windows Azure的数据库现在称为SQL数据库(有关更多信息,请参阅)。这就是为什么我称它为SQL数据库,而不是SQL Server数据库(它有效地将其含义从“数据库即服务”更改为“独立数据库”)。OP将SQL数据库称为其遗留名称SQL Azure。因此。。。我删除了重命名它的编辑。我会将它标记为
sqlazure
-这很清楚<代码>SQL数据库是一个矛盾-SQL只是查询语言,而不是产品。而且它绝对是SQLServerCE,而不仅仅是SQLCE。我想避免使用SQLAzure以最小化成本。在VM中运行SQL也没有帮助。。还有其他我错过的选择吗?如果没有,我将不得不使用SQL Azure来完成我的工作。@Madushan-Blob和表存储非常便宜(低于10美分/GB/月),但如果将.net对象存储到Blob,则需要自己进行序列化。这就是这个问题的答案。不知道您存储了多少,但1GB SQL数据库实例每月只需10美元,只占您角色实例成本的一小部分。+1使用SQL数据库。它快速、安全,具有良好的工具支持和弹性。都是10美元一个月。它很便宜,而且你已经知道如何使用它了。