C# 同时从LINQ和SSMS打开SQL Server数据库
我在本地机器上有一个数据库。我有一个C#应用程序,它使用LINQtoSQL将记录插入这个数据库。我使用SSMS(SQLServerManagementStudio)打开了数据库(并在查询窗口中选择了记录)。现在,如果我尝试运行C#应用程序,我会得到以下错误:C# 同时从LINQ和SSMS打开SQL Server数据库,c#,.net,visual-studio-2010,sql-server-2008,linq-to-sql,C#,.net,Visual Studio 2010,Sql Server 2008,Linq To Sql,我在本地机器上有一个数据库。我有一个C#应用程序,它使用LINQtoSQL将记录插入这个数据库。我使用SSMS(SQLServerManagementStudio)打开了数据库(并在查询窗口中选择了记录)。现在,如果我尝试运行C#应用程序,我会得到以下错误: “Cannot open user default database. Login failed. Login failed for user DFGV\G16570'.” 当我重新启动系统时,这个错误就会消失 注意:我使用的是integ
“Cannot open user default database. Login failed. Login failed for user DFGV\G16570'.”
当我重新启动系统时,这个错误就会消失
注意:我使用的是integratedsecurity=True
注意:SQL Server使用“LocalSystem”帐户运行
LINQ中的连接字符串:
Data Source=.; AttachDbFilename=C:\DevTEST\Databases\LibraryReservationSystem.mdf;
Integrated Security=True; Connect Timeout=30;User Instance=True
注:“用户实例”关键字
以下是我的LINQ查询:
public virtual void InsertOnSubmit(T entity)
{
GetTable().InsertOnSubmit(entity);
Context.SubmitChanges();
}
当我通过SSMS连接到数据库时,我应该怎么做才能使LINQ正常工作
编辑
根据响应,我更改了代码,如下所示
string connectionstring = "Data Source=.;Initial Catalog=LibraryReservationSystem;Integrated Security=True;Connect Timeout=30";
using (var context = new RepositoryLayer.LibraryManagementClassesDataContext(connectionstring))
{
RepositoryLayer.Repository<RepositoryLayer.Account> selectedRepository = new RepositoryLayer.Repository<RepositoryLayer.Account>();
selectedRepository.Context = context;
AccountBusiness accountBl = new AccountBusiness(selectedRepository);
//List<RepositoryLayer.Account> accountList = accountBl.GetAllAccounts();
accountBl.InsertAccounts();
}
string connectionstring=“数据源=;初始目录=LibraryReservationSystem;集成安全性=True;连接超时=30”;
使用(var context=new RepositoryLayer.LibraryManagementClassesDataContext(connectionstring))
{
RepositoryLayer.Repository selectedRepository=newrepositorylayer.Repository();
selectedRepository.Context=Context;
AccountBusiness accountBl=新的AccountBusiness(selectedRepository);
//List accountList=accountBl.GetAllAccounts();
accountBl.InsertAccounts();
}
注意:确保未将“User Instance”关键字设置为TRUE您正在使用该选项打开数据库,这意味着该数据库是作为用户实例打开的,只能通过打开它的进程标识访问 如果要从多个进程访问数据库,请将其附加到适当的SQL Server实例,然后通过InitialCatalog属性中的数据库名称连接到该实例。不要使用AttachDbFileName和UserInstance
这在什么是您的连接字符串?这是windows窗体应用程序还是web应用程序中有描述。很明显,您使用的是集成安全性,但尝试连接数据库的用户没有在数据库上进行连接和操作的权限。我使用的是控制台应用程序。此应用程序正在访问使用LINQ的类库。您不能访问这样的连接字符串。您应该使用中介绍的ConfigurationManager.ConnectionString属性。在任何情况下,您仍然使用“User Instance”关键字,这意味着连接将失败。