【发布时间】:2015-11-30 07:49:55
【问题描述】:
我已更改连接字符串以指向远程服务器中的数据库。但是当我执行项目时,程序仍然指向本地数据库。
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="TEDALS_Ver01.DAL.TedalsContext"
connectionString="Data Source=FE0VMC0643\SQLEXPRESS;
AttachDbFilename=|DataDirectory|\TeDaLSdev.mdf;
Integrated Security=False"
providerName="System.Data.SqlClient"
/>
<!--<add
name="TEDALS_Ver01.DAL.TedalsContext"
connectionString="Server=FE0VMC0643; Database=TeDaLSdev; "
providerName="System.Data.SqlClient" />-->
<!--<add name="TEDALS_Ver01.DAL.TedalsContext"
providerName="System.Data.SqlClient"
connectionString="Server=FE0VMC0643;Data Source=FE0VMC0643;
Initial Catalog=TeDaLSdev;
Integrated Security=True;
Connect Timeout=15;
Encrypt=False;
TrustServerCertificate=False;" />-->
</connectionStrings>
评论是我到目前为止所使用的不同连接字符串。当我使用 LocalDB 时,我从来没有连接字符串。
连接构造函数
public class TedalsContext : DbContext
{
public TedalsContext()
: base("TedalsContext")
{
//Database.SetInitializer<TedalsContext>(null);
}
}
我使用 SQL Server Express 作为我的数据库。我还尝试将构造函数中base 的参数名称更改为数据库的名称。但这并没有改变任何东西。
我已经尝试过是否可以通过 SSMS 访问数据库。我能够创建表,但我无法重命名数据库(我没有重命名数据库 TeDalSdev 的访问权限)。
我可以尝试其他任何解决方法吗?远程数据库和本地数据库的名称是否应该相同,以避免更改大量代码?
更新
控制器
public class LsystemFamiliesController : Controller
{
private TedalsContext db = new TedalsContext();
//Code goes here
}
【问题讨论】:
-
用 base("TEDALS_Ver01.DAL.TedalsContext") 调用基础?在文档here 中,它说 EF 将以不同的方式获取代码优先和设计器生成的上下文的连接字符串..
-
但独立地,您传递给 DBContext 构造函数的名称应该是连接字符串的名称。您只传递了 TedalsContext,它看起来并不存在于您的配置文件中。
-
@OguzOzgul:现在我在服务器中添加了一个与我的 localdb 完全相同的新数据库。我真的不明白连接字符串中的不同参数。所以我必须通过反复试验才能让它以某种方式工作。
-
数据库名称不是这里的问题,你没看到吗?连接字符串“TedalsContext”的名称与配置文件中的任何连接字符串都不匹配。试试 base("TEDALS_Ver01.DAL.TedalsContext") ?
标签: c# sql-server asp.net-mvc visual-studio windows-authentication