Entity Framework 和 SQL 服务器数据库连接字符串
Entity Framework and SQL Server database connection string
我使用 EF 已经有一段时间了,我一直使用 LocalDb 来存储数据。我想开始使用 SQL 服务器数据库,但我在设置连接字符串时遇到了一些问题。
https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#sse
https://www.connectionstrings.com/
并查看了 google 但是 none 的答案使它在我的情况下有效所以我一定是做错了什么(一些连接字符串抛出异常其他人没有但不会也不要向数据库中插入任何东西)
我的问题是在使用 EF 和 SQL 服务器时,我是否应该同时使用 App.config
中的连接字符串并在上下文的 CTOR 中设置数据库的路径(通过使用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 服务器实例使用 Windows 身份验证。
我做错了什么?我应该将我的路径设置为程序文件文件夹还是 App_Data
(我都看过并尝试过但都没有用)?
亲切的问候!
一旦您确定了主机名,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="data source=.\sql2014;initial catalog=AdventureWorks;persist security info=True;user id=App_AdventureWorks;password=asdasdfasdfasdf;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
您的数据库上下文将类似于 this.Again,EF 会为您生成它。
public partial class AdventureWorksEntities : DbContext
{
public AdventureWorksEntities()
: base("name=AdventureWorksEntities")
{
}
数据源密钥用于查找运行 Sql 服务器实例的机器。
您可以使用不同的字符串,但在 LAN 环境中最常用的字符串是使用服务器计算机的名称后跟最终的实例名称组成的。
因此,如果您的本地 PC 名为 GURUBEAST-PC,并且在安装时您没有指定任何实例名称,则连接字符串数据源仅包含名称机器 GURUBEAST-PC。如果您有一个实例名称,那么您应该将该实例名称添加到您的数据源键中。 GURUBEAST-PC\GURUSQL
这将保证同一 LAN 中的所有 PC 也有可能具有相同的连接字符串,即使连接是从运行 SQL 服务器的同一台 PC 建立的。
如果Data Source指向本地pc,可以用很多快捷键来表示本地pc:
(LOCAL)
localhost
.
\.
并最终将实例名称添加到这些快捷方式而不重复 PC 名称
我使用 EF 已经有一段时间了,我一直使用 LocalDb 来存储数据。我想开始使用 SQL 服务器数据库,但我在设置连接字符串时遇到了一些问题。
https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#sse https://www.connectionstrings.com/
并查看了 google 但是 none 的答案使它在我的情况下有效所以我一定是做错了什么(一些连接字符串抛出异常其他人没有但不会也不要向数据库中插入任何东西)
我的问题是在使用 EF 和 SQL 服务器时,我是否应该同时使用 App.config
中的连接字符串并在上下文的 CTOR 中设置数据库的路径(通过使用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 服务器实例使用 Windows 身份验证。
我做错了什么?我应该将我的路径设置为程序文件文件夹还是 App_Data
(我都看过并尝试过但都没有用)?
亲切的问候!
一旦您确定了主机名,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="data source=.\sql2014;initial catalog=AdventureWorks;persist security info=True;user id=App_AdventureWorks;password=asdasdfasdfasdf;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
您的数据库上下文将类似于 this.Again,EF 会为您生成它。
public partial class AdventureWorksEntities : DbContext
{
public AdventureWorksEntities()
: base("name=AdventureWorksEntities")
{
}
数据源密钥用于查找运行 Sql 服务器实例的机器。
您可以使用不同的字符串,但在 LAN 环境中最常用的字符串是使用服务器计算机的名称后跟最终的实例名称组成的。
因此,如果您的本地 PC 名为 GURUBEAST-PC,并且在安装时您没有指定任何实例名称,则连接字符串数据源仅包含名称机器 GURUBEAST-PC。如果您有一个实例名称,那么您应该将该实例名称添加到您的数据源键中。 GURUBEAST-PC\GURUSQL
这将保证同一 LAN 中的所有 PC 也有可能具有相同的连接字符串,即使连接是从运行 SQL 服务器的同一台 PC 建立的。
如果Data Source指向本地pc,可以用很多快捷键来表示本地pc:
(LOCAL)
localhost
.
\.
并最终将实例名称添加到这些快捷方式而不重复 PC 名称