Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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# EF只允许我选择SQL Server CE 3.5_C#_Asp.net_Asp.net Mvc_Entity Framework_Sql Server Ce - Fatal编程技术网

C# EF只允许我选择SQL Server CE 3.5

C# EF只允许我选择SQL Server CE 3.5,c#,asp.net,asp.net-mvc,entity-framework,sql-server-ce,C#,Asp.net,Asp.net Mvc,Entity Framework,Sql Server Ce,我有一个包含两个项目的Visual Studio解决方案:MyApp.MvcUI和MyApp.Domain类库 MyApp.MvcUI包含我的SQL Server CE 4数据库 域应该包含实体框架EDMX文件,但是如果我在那里添加它,我就没有选择使用SQL Server CE 4,只有3.5 如果在MvcUI项目中添加EDMX,则可以选择SQL Server CE 4 问题: 如何将实体框架内容放入MyApp.Domain项目并使用MyApp.MvcUI项目中的SQL Server CE 4数

我有一个包含两个项目的Visual Studio解决方案:MyApp.MvcUI和MyApp.Domain类库

MyApp.MvcUI包含我的SQL Server CE 4数据库

域应该包含实体框架EDMX文件,但是如果我在那里添加它,我就没有选择使用SQL Server CE 4,只有3.5

如果在MvcUI项目中添加EDMX,则可以选择SQL Server CE 4

问题:

如何将实体框架内容放入MyApp.Domain项目并使用MyApp.MvcUI项目中的SQL Server CE 4数据库

一旦我解决了这个问题,App.Config中连接字符串的数据源部分会是什么样子?我知道web项目的连接字符串将如下所示:

Data Source=|DataDirectory|\CE4DB.sdf
但是在MyApp.Domain项目的App.Config中会是什么样子呢?这是一条绝对的道路吗

C:\Code\MyProject\MyApp.MvcUI\App_Data\CE4DB.sdf

如果是这样的话,有没有一种方法可以使它成为一个相对路径,这样当人们从源代码管理中删除项目时,它仍然可以在没有路径修正的情况下工作?

我相信你必须像我为我做的那样做下面的事情

安装EF 4.1 安装SQL Server CE 4.0
我相信你必须做以下我为我所做的事情

安装EF 4.1 安装SQL Server CE 4.0
我建议使用NuGet下载EF、SQLServerCE4.0和所有需要的依赖项,并自动将它们添加到您的项目中

这还将在应用程序配置中设置所需的提供程序,以防丢失


如果您不熟悉NuGet,可以在解决方案资源管理器窗口中右键单击项目,然后选择添加库引用。也许这不是准确的名称,但很容易找到。

我建议使用NuGet下载EF、SQL Server CE 4.0和所有需要的依赖项,并自动将它们添加到您的项目中

这还将在应用程序配置中设置所需的提供程序,以防丢失


如果您不熟悉NuGet,可以在解决方案资源管理器窗口中右键单击项目,然后选择添加库引用。也许这个名字不准确,但很容易找到。

我在这里尝试了这些建议。我的EF在这篇文章中已经是最新的4.3版本了,但我确实通过nuget安装了SQL Server CE,还安装了EntityFramework.SqlServerCompact,这表示允许SQL Server Compact 4.0与Entity Framework一起使用。在尝试从数据库更新EDMX模型时,仍然没有在向导中使用CE 4的选项。如果这些都是在MVC项目中完成的,那么我可以选择在我的问题中的对话框中使用CE4

不过我确实让它起作用了。我只是使用了一个连接字符串,就像我在MVC项目中放置EDMX时生成的连接字符串一样

<add name="EntityContainer" 
     connectionString="metadata=res://*/Model1.csdl|
                                res://*/Model1.ssdl|
                                res://*/Model1.msl;
                       provider=System.Data.SqlServerCe.4.0;
       provider connection string=&quot;
         Data Source=..\MyApp.MvcUI\App_Data\CE4DB.sdf&quot;"
     providerName="System.Data.EntityClient" />
然后我可以让EF设计器从数据库中读取数据。另外,数据源路径是相对的:D,因此其他开发人员从源代码管理中获取项目的新副本时,也可以直接使用EF设计器,而无需对其进行调整。我计划很快切换到CodeFirstEF,但我想先让这一切和EDMX一起工作,因为这是我目前知道的方法

显然,在运行时,MyApp.Domain中的连接字符串并不重要,因为它从活动项目的配置文件中读取。在本例中,MvcUI项目的Web.Config。其中,由于路径简化,连接字符串更加容易

<add name="EntityContainer"
     connectionString="metadata=res://*/Model1.csdl|
                                res://*/Model1.ssdl|
                                res://*/Model1.msl;
                       provider=System.Data.SqlServerCe.4.0;
       provider connection string=&quot;
         Data Source=|DataDirectory|\CE4DB.sdf&quot;"
       providerName="System.Data.EntityClient" />

我试过这里的建议。我的EF在这篇文章中已经是最新的4.3版本了,但我确实通过nuget安装了SQL Server CE,还安装了EntityFramework.SqlServerCompact,这表示允许SQL Server Compact 4.0与Entity Framework一起使用。在尝试从数据库更新EDMX模型时,仍然没有在向导中使用CE 4的选项。如果这些都是在MVC项目中完成的,那么我可以选择在我的问题中的对话框中使用CE4

不过我确实让它起作用了。我只是使用了一个连接字符串,就像我在MVC项目中放置EDMX时生成的连接字符串一样

<add name="EntityContainer" 
     connectionString="metadata=res://*/Model1.csdl|
                                res://*/Model1.ssdl|
                                res://*/Model1.msl;
                       provider=System.Data.SqlServerCe.4.0;
       provider connection string=&quot;
         Data Source=..\MyApp.MvcUI\App_Data\CE4DB.sdf&quot;"
     providerName="System.Data.EntityClient" />
然后我可以让EF设计器从数据库中读取数据。另外,数据源路径是相对的:D,因此其他开发人员从源代码管理中获取项目的新副本时,也可以直接使用EF设计器,而无需对其进行调整。我计划很快切换到CodeFirstEF,但我想先让这一切和EDMX一起工作,因为这是我目前知道的方法

显然,在运行时,MyApp.Domain中的连接字符串并不重要,因为它从活动项目的配置文件中读取。在本例中,MvcUI项目的Web.Config。其中,由于路径简化,连接字符串更加容易

<add name="EntityContainer"
     connectionString="metadata=res://*/Model1.csdl|
                                res://*/Model1.ssdl|
                                res://*/Model1.msl;
                       provider=System.Data.SqlServerCe.4.0;
       provider connection string=&quot;
         Data Source=|DataDirectory|\CE4DB.sdf&quot;"
       providerName="System.Data.EntityClient" />

正如您所注意到的,4.0 EDMX向导仅适用于Web项目。您可以使用我的SQL Server Compact工具箱外接程序在任何项目类型中创建和安装4.0 EDMX。

4.0 EDMX wizar
正如您所注意到的,d仅适用于Web项目。您可以使用我的SQL Server Compact工具箱外接程序在任何项目类型中创建和安装4.0 EDMX。

谢谢!我想知道你是否能帮助你在类库中实现这个功能?我已经做了很多,向导仍然显示了我问题中的图片。你安装了CE的4.0运行时吗?谢谢!我想知道你是否能帮助你在类库中实现这个功能?我已经做了很多,向导仍然显示了我问题中的图片。你安装了CE的4.0运行时吗?我确实使用了nuget,我已经用它获得了EF 4.3。我不知道他们有Sql Server Compact。非常感谢。但是有一个问题,我是在域类库项目中还是在web项目中安装它?将其添加到类库似乎没有帮助。向导仍然不允许我像在web项目中放置EDMX时那样选择CE 4。在一个项目中工作,而不是在另一个项目中工作。真奇怪。尽管如此,我还是让它发挥了作用。我将把它作为一个答案发布。我确实使用nuget,我已经用它获得了EF4.3。我不知道他们有Sql Server Compact。非常感谢。但是有一个问题,我是在域类库项目中还是在web项目中安装它?将其添加到类库似乎没有帮助。向导仍然不允许我像在web项目中放置EDMX时那样选择CE 4。在一个项目中工作,而不是在另一个项目中工作。真奇怪。尽管如此,我还是让它发挥了作用。我会把它贴出来作为答案。我也有同样的问题。我尝试将连接字符串添加到app.config中,但在添加EF模型时,我无法从app.config文件中选择连接字符串。因此,我必须添加EF模型,并在本地SQLServerExpress中创建一个新的连接字符串。当被问及要映射哪些对象时,我选择了“无”。所以我得到了一个空的EF模型,它将连接字符串保存到我的app.config。然后我只是在app.config中更改了连接字符串以指向我的CE数据库,打开了EF设计器并从数据库中进行了更新,瞧-我也有同样的问题。我尝试将连接字符串添加到app.config中,但在添加EF模型时,我无法从app.config文件中选择连接字符串。因此,我必须添加EF模型,并在本地SQLServerExpress中创建一个新的连接字符串。当被问及要映射哪些对象时,我选择了“无”。所以我得到了一个空的EF模型,它将连接字符串保存到我的app.config。然后我只是在app.config中更改了连接字符串以指向我的CE数据库,打开了EF设计器并从数据库中进行了更新,瞧-