1

我面临许多人已经面临的问题,但有所不同:SDF 文件名或路径均不包含无效字符。我什至尝试过使用 Northwind.sdf 文件,而 Ikeep 也遇到了同样的问题。

完整路径示例:D:\Sviluppo\dotnet\EnergiaClima\EnergiaClimaWindows\App_Data\Northwind.sdf

错误信息:

System.ArgumentException: The modelEntityContainerName parameter 'D:\Sviluppo\dotnet\EnergiaClima\EnergiaClimaWindows\App_Data\NorthwindsdfContext' contains characters that are not valid.
   at System.Data.Entity.Design.EntityModelSchemaGenerator..ctor(EntityContainer storeEntityContainer, String namespaceName, String modelEntityContainerName)
   at Microsoft.DbContextPackage.Handlers.ReverseEngineerCodeFirstHandler.ReverseEngineerCodeFirst(Project project)

这个问题让我发疯:EF Power Tools Beta 3 真的可以在 VS2010 中运行吗?如果不是,从 SQLCE4.0 DB 获取实体模型的最佳(和更简单)方法是什么(如果可能的话,不是创建 3.5 DB 和编辑 XML 文件的方法)?

我不明白为什么 SQLCE4.0 支持这么差。

4

3 回答 3

1

现在这是一个经过验证的问题:http ://entityframework.codeplex.com/workitem/898

我想知道这些人是如何测试他们的库的:他们是否曾尝试将 EF5 Code First 与 SQL CE 数据库一起使用?

无论如何,希望它会在 EF6 中得到解决。

于 2013-04-09T19:58:09.637 回答
0

这仍然发生在现有的基于文件的数据库上。这将在 Sql Server Compact 和 LocalDb 中发生。它与服务器实例下的数据库名称有关。如果您在通过代码连接到同一个数据库之前尝试直接从“逆向工程师代码优先”连接对话框连接到原始 .mdf / .sdf,则数据库引擎会将数据库加载到名称等于db 的完整路径,因为没有地方命名数据库(初始目录)并且必须命名数据库才能将其加载到 sql server 实例。然后,当 EF Reverse Engineer Code First 尝试创建上下文时,它会阻塞 DBName 中存在的反斜杠(可能还有冒号)。{注意:如果您在针对数据库连接字符串发布了一些代码之后进行连接,

快速简便的解决方案是:

1) 关闭 Visual Studio 以终止与数据库的连接。

2) 启动 SQL Server Management Studio 并连接到 "(localDB)\v11.0" {注意这是 localDB 实例,我不知道紧凑型数据库实例是什么。

3) 右键单击​​数据库名称并选择重命名以将数据库重命名为所需的初始目录名称,而不是完整的文件名路径名。

也许 EF 逆向工程师代码优先工具应该评估 DBName 并且只使用最后一个斜杠减去 DBContext 的文件扩展名的所有内容?特别是因为大多数连接字符串将初始目录定义为与文件名相同的名称。

希望这可以帮助某人。

于 2014-05-05T20:08:41.057 回答
0

假设您想从 SQL Server Compact 文件创建 edmx,您可以使用我的 SQL Server Compact Toolbox 扩展从任何 3.5 或 4.0 文件创建 edmx。

于 2013-02-20T13:39:18.803 回答