C#无法访问远程数据库

unable to access remote database in C#

我已将连接字符串更改为指向远程服务器中的数据库。但是当我执行项目时,程序仍然指向本地数据库。

<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
}

我已经从我的一个项目的网络配置文件中添加了一个连接字符串,并添加了(应该)检查的所有字段。这是在 <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,直到它正常工作,然后您可以专注于更改名称。注释掉您的本地数据库连接字符串。如果需要,甚至可以将其从项目中删除(并将其保存在其他地方),同时进行测试。

我还添加了我的文件夹目录的屏幕截图,以显示我正在修改的 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

正如我在讨论中所建议的那样。我还建议您联系网络托管服务提供商,因为我遇到过无法连接的问题,而且这是托管端的问题。

如果您需要更多帮助,请大声喊出来。

在您的 TedalsContext 构造函数下,使用 : base(connectionStringName)

否则,上下文首先会将其视为代码并在您的 SQLExpress 本地数据库中创建一个 TedalContext。

public class TedalsContext : DbContext
{
    public TedalsContext()
        : base("TEDALS_Ver01.DAL.TedalsContext")
    {
        //Database.SetInitializer<TedalsContext>(null);
    }
}