Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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# 实体框架和SQL Server数据库连接字符串_C#_Sql Server_Database_Entity Framework_Connection String - Fatal编程技术网

C# 实体框架和SQL Server数据库连接字符串

C# 实体框架和SQL Server数据库连接字符串,c#,sql-server,database,entity-framework,connection-string,C#,Sql Server,Database,Entity Framework,Connection String,我已经使用EF一段时间了,我一直使用LocalDb来存储数据。我想开始使用SQL Server数据库,但在设置连接字符串时遇到了一些问题 我查看了google,但没有一个答案能在我的案例中起作用,所以我一定是做错了什么(一些连接字符串抛出了一个异常,其他的没有,但也不会在数据库中插入任何内容) 我的问题是,在使用EF&SQL Server时,我应该同时使用App.config中的连接字符串和在上下文的CTOR中设置DB的路径(通过使用AppDomain.CurrentDomain.SetDa

我已经使用EF一段时间了,我一直使用LocalDb来存储数据。我想开始使用SQL Server数据库,但在设置连接字符串时遇到了一些问题

我查看了google,但没有一个答案能在我的案例中起作用,所以我一定是做错了什么(一些连接字符串抛出了一个异常,其他的没有,但也不会在数据库中插入任何内容)

我的问题是,在使用EF&SQL Server时,我应该同时使用
App.config
中的连接字符串和在上下文的CTOR中设置DB的路径(通过使用
AppDomain.CurrentDomain.SetData(“DataDirectory”,path);
)还是
App.config
足够

我尝试了以下连接字符串:

Data Source=.\GURUBEAST-PC\GURUSQL;Initial Catalog=iManager;Trusted_Connection=True;MultipleActiveResultSets=True;

Data Source=.\GURUBEAST-PC\GURUSQL;Database=iManager;Integrated Security=True;Trusted_Connection=True;MultipleActiveResultSets=True;

Data Source=.\GURUBEAST-PC\GURUSQL;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL11.GURUSQL\MSSQL\DATA\iManager.mdf;Database=iManager;Trusted_Connection=True;MultipleActiveResultSets=True;

Data Source=.\GURUBEAST-PC\GURUSQL;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL11.GURUSQL\MSSQL\DATA\iManager.mdf;Database=iManager;Trusted_Connection=True;

Data Source=.\GURUBEAST-PC\GURUSQL;Database=iManager;Trusted_Connection=True;

Data Source=.\GURUBEAST-PC\GURUSQL;Initial Catalog=iManager;Integrated Security=SSPI;

Data Source=.\GURUBEAST-PC\GURUSQL;Initial Catalog=iManager;User id=GURUBEAST-PC\GuruBeast;
其中“iManager”是数据库的名称。我对我的SQL Server实例使用Windows auth

我做错了什么?我应该设置程序文件文件夹的路径还是设置应用程序数据的路径(我都看过,都试过了,但都不起作用)


亲切的问候

一旦您确定了主机名,Entity Framework将为您生成连接字符串。下面是一个示例,说明了如果您试图连接到托管在本地SQL Server 2014实例上的AdventureWorks数据库(该实例的名称为sql2014),则连接字符串可能是什么样子

<connectionStrings>
    <add name="AdventureWorksEntities" connectionString="metadata=res://*/DataModels.AdventureWorksDb.csdl|res://*/DataModels.AdventureWorksDb.ssdl|res://*/DataModels.AdventureWorksDb.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sql2014;initial catalog=AdventureWorks;persist security info=True;user id=App_AdventureWorks;password=asdasdfasdfasdf;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

一旦计算出主机名,EntityFramework将为您生成连接字符串。下面是一个示例,说明了如果您试图连接到托管在本地SQL Server 2014实例上的AdventureWorks数据库(该实例的名称为sql2014),则连接字符串可能是什么样子

<connectionStrings>
    <add name="AdventureWorksEntities" connectionString="metadata=res://*/DataModels.AdventureWorksDb.csdl|res://*/DataModels.AdventureWorksDb.ssdl|res://*/DataModels.AdventureWorksDb.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sql2014;initial catalog=AdventureWorks;persist security info=True;user id=App_AdventureWorks;password=asdasdfasdfasdf;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

数据源密钥用于查找运行Sql Server实例的计算机。
您可以为它设置不同的字符串,但在LAN环境中最常用的字符串是使用服务器机器的名称,后跟最终的实例名称

因此,如果您的本地PC名为GURUBEAST-PC,并且在安装时未指定任何实例名称,则connectionstring数据源仅包含机器的名称GURUBEAST-PC。如果您有实例名称,则应将该实例名称添加到数据源密钥中。GURUBEAST-PC\GURUSQL

这将保证同一LAN中的所有PC都有可能具有相同的连接字符串,前提是连接来自运行SQL Server的同一台PC

如果数据源指向本地pc,则可以使用许多快捷方式来表示本地pc:

(LOCAL)
localhost
.
\.

并最终将实例名称添加到这些快捷方式中,而无需重复PC名称

数据源键用于查找运行Sql Server实例的计算机。
您可以为它设置不同的字符串,但在LAN环境中最常用的字符串是使用服务器机器的名称,后跟最终的实例名称

因此,如果您的本地PC名为GURUBEAST-PC,并且在安装时未指定任何实例名称,则connectionstring数据源仅包含机器的名称GURUBEAST-PC。如果您有实例名称,则应将该实例名称添加到数据源密钥中。GURUBEAST-PC\GURUSQL

这将保证同一LAN中的所有PC都有可能具有相同的连接字符串,前提是连接来自运行SQL Server的同一台PC

如果数据源指向本地pc,则可以使用许多快捷方式来表示本地pc:

(LOCAL)
localhost
.
\.

并最终将实例名称添加到这些快捷方式中,而不重复PC名称

这些是什么。\n在每个数据源键的开头?指定主机\实例名称时不需要它。您是否使用Sql Server Management Studio尝试过这些主机名?亲爱的先生,您刚刚度过了我的一天!我删除了“/”并使用了这个连接字符串:GURUBEAST-PC\GURUSQL;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL11.GURUSQL\MSSQL\DATA\iManager.mdf;数据库=iManager;Trusted_Connection=True;MultipleActiveResultSets=True;这就成功了。但是为什么我不应该使用“/”这不是对本地主机的引用?这是有意义的,因为使用SSMS它只使用“GURUBEAST-PC\GURUSQL”,而不使用“/”。。。我从没想过。非常感谢你!为什么我不能将您的响应标记为asnwer?它们是什么。\n在每个数据源键的开头?指定主机\实例名称时不需要它。您是否使用Sql Server Management Studio尝试过这些主机名?亲爱的先生,您刚刚度过了我的一天!我删除了“/”并使用了这个连接字符串:GURUBEAST-PC\GURUSQL;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL11.GURUSQL\MSSQL\DATA\iManager.mdf;数据库=iManager;Trusted_Connection=True;MultipleActiveResultSets=True;这就成功了。但是为什么我不应该使用“/”这不是对本地主机的引用?这是有意义的,因为使用SSMS它只使用“GURUBEAST-PC\GURUSQL”,而不使用“/”。。。我从没想过。非常感谢你!为什么我不能将您的响应标记为asnwer?我不知道“.csdl.ssdl&.msl”文件是什么,但我的解决方案中没有这些文件,我得到的错误是它们也不存在。他们是EF的shemas吗?我从来没有用过这些,实际上我总是以编程的方式创建所有东西。感谢Mitch的帮助,感谢Steve(你的答案实际上解决了我的问题,我会给你的答案打上标记,但我不清楚…?)我不知道“.csdl.ssdl&.msl”文件是什么,但我的解决方案中没有这些文件,我也收到了一个错误,即它们不存在。他们是EF的shemas吗?我从来没有用过这些,实际上我总是以编程的方式创建所有东西。谢谢米奇的帮助,也谢谢史蒂夫(你的回答实际上解决了我的问题,我会给你的答案打上记号,但我不能表面上…?)啊,那完全是真的