我已将连接字符串更改为指向远程服务器中的数据库。但是当我执行项目时,程序仍然指向本地数据库。
<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
}
答案 0 :(得分:4)
我已经从我的某个项目的Web配置文件和(应该)检查的所有字段添加了一个连接字符串。这在<connectionStrings>
标签内。您需要将其设置为默认连接,并且只能将一个连接字符串作为默认连接。
<add name="DefaultConnection" providerName="System.Data.SqlClient"
connectionString="Data Source=Providedbyhost;integrated
security=false;Initial Catalog=DB_Name;User Id=UserId;Password=password;
Trusted_Connection=false; TrustServerCertificate=true;
Encrypt=true;MultipleActiveResultSets=True" />
您拥有数据库上下文的位置:
public TedalsContext()
: base("DefaultConnection")
将所有内容切换到DefaultConnection,直到它正常工作,然后您可以专注于更改名称。注释掉本地数据库连接字符串。如果你需要(甚至将其保存在别处),甚至在测试时将它从项目中删除。
我还添加了my folder目录的屏幕截图,以显示我正在修改的web配置文件夹。看到它以蓝色突出显示。
此屏幕截图还显示了在VS中测试连接字符串的导航位置。
我建议你看看这里:
How to: Access SQL Server Using Windows Integrated Security
What will be the connectionstring for mssql windows authentication
和此:
Connection string using Windows Authentication
正如我在讨论中所建议的那样。我建议也联系网络托管服务提供商,因为我遇到了这个问题,它无法连接,这在托管端是一个问题。
如果您需要更多帮助,请大声喊叫。
答案 1 :(得分:0)
在您的TedalsContext构造函数下,使用: base(connectionStringName)
。
否则,上下文会首先将其视为代码,并在SQLExpress Local DB中创建TedalContext。
public class TedalsContext : DbContext
{
public TedalsContext()
: base("TEDALS_Ver01.DAL.TedalsContext")
{
//Database.SetInitializer<TedalsContext>(null);
}
}