【问题标题】:Connecting to .sdf连接到 .sdf
【发布时间】:2013-04-10 15:30:50
【问题描述】:

我是这个世界的新手,坦率地说,我不喜欢它的复杂性,但那不是重点。

我创建了一个名为 Sample.sdf 的新数据库,然后创建了一个新的 ASP.NET MVC3 应用程序。我正在阅读您必须将.sdf 数据库复制到项目的根目录。所以我这样做了,我尝试创建一个到这个紧凑型数据库的新 ADO.net 连接,但我必须这样做吗?

我不能在 web.config 中使用连接字符串对象并将其配置为指向该数据库吗?如果是,有没有办法测试连接?

我很好奇,因为我打算将它与实体框架一起使用。

更新:

所以我想出了一些事情:

其中一个.sdf 必须进入App_Data 文件夹,然后从他们那里创建一个基于现有数据库的ADO.net 实体模型。它会自动查看数据库并为您完成其余的工作,或者至少在我的情况下是这样。

但是它抛出一个错误,在实体数据模型向导中单击下一步,选择我的数据连接后,我得到:

无法创建新数据库。

与 SQL Server 建立连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定实例)

System.Data.SqlClient.SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供程序:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)
在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔型 breakConnection)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
在 System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo、SqlInternalConnectionTds connHandler、布尔 ignoreSniOpenTimeout、Int64 timerExpire、布尔加密、布尔 trustServerCert、布尔集成安全)
在 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo,字符串 newPassword,布尔型 ignoreSniOpenTimeout,TimeoutTimer 超时,SqlConnection owningObject)
在 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo、String newPassword、Boolean redirectedUserInstance、SqlConnection owningObject、SqlConnectionString connectionOptions、TimeoutTimer 超时)
在 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject,TimeoutTimer 超时,SqlConnectionString connectionOptions,String newPassword,Boolean redirectedUserInstance)
在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity 标识,SqlConnectionString 连接选项,对象 providerInfo,字符串 newPassword,SqlConnection owningObject,布尔重定向用户实例)
在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions 选项,对象 poolGroupProviderInfo,DbConnectionPool 池,DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection,DbConnectionPool 池,DbConnectionOptions 选项)
在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
在 System.Data.SqlClient.SqlConnection.Open()
在 Microsoft.SqlServer.Management.Common.ConnectionManager.InternalConnect(WindowsIdentity impersonatedIdentity)
在 Microsoft.SqlServer.Management.Common.ConnectionManager.Connect()

我不确定如何继续。

【问题讨论】:

  • SqlException 的出现是因为您尝试使用 完整的 SQL Server 类连接到 SQL Server Compact 数据库 -那是行不通的。要么您在创建实体数据模型时没有选择 SQL Server Compact 作为您的数据库类型,要么您的连接字符串以其他方式被破坏。

标签: .net asp.net-mvc entity-framework sql-server-ce


【解决方案1】:

我相信您走在正确的道路上,但由于这是您第一次,我建议您按照 Microsoft 的逐步演练进行操作,该步骤可在此处获得:

数据库优先方法:http://msdn.microsoft.com/en-us/data/jj206878.aspx

通用学习资源页面在这里:http://msdn.microsoft.com/en-us/data/ee712907

这就是我一开始用来掌握 MVC 和实体框架的方法。它非常简单直接,我向你保证,你会爱上它的。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多