实体框架:连接到外部数据库

时间:2013-05-07 15:07:28

标签: entity-framework web-applications asp.net-mvc-4 database-connection

我在MS VS 2012 express下创建了应用程序。我正在使用Entity Framework来访问本地数据库SQL Server Compact 4.0。一切正常:

的Web.config

  <connectionStrings>
   <add name="KMDBContext" connectionString="Data Source=|DataDirectory|\kmdbs.sdf" providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>

LessonsL.cs

public class KMDBContext : DbContext
{
    public DbSet<LessonsL> LessonsLs { get; set; }
}

LessonsLController.cs

private KMDBContext db = new KMDBContext();

但我无法连接到外部SQL Server数据库。测试连接返回正面结果。我可以使用MS Server Management Studio使用外部数据库。但无法检索或存储数据。我可以在数据库资源管理器中看到外部数据库,但MS VS 2012仍然连接到某个本地文件(pdb或其他东西)。

的Web.config

  <connectionStrings>
    <add name="LessonLs" connectionString="server=ustsql;database=LessonLs;Integrated Security=true" providerName="System.Data.SqlClient" />
  </connectionStrings>

kmd.cs

public class KMDContext : DbContext
{
    public DbSet<kmd> LessonsLs { get; set; }
}

KMDController.cs

private KMDContext db = new KMDContext();

有谁可以说我错过了什么? THX

2 个答案:

答案 0 :(得分:0)

您的连接字符串的名称仍然需要是“KMDContext”,因为这是您的DbContext的名称。

的Web.config

<connectionStrings>
    <add name="KMDContext" connectionString="server=ustsql;database=LessonLs;Integrated Security=true" providerName="System.Data.SqlClient" />
</connectionStrings>

答案 1 :(得分:0)

可能问题是连接到SQL Server上的现有表。我先创建了表,然后尝试连接它。

一旦我删除了本地PC上的所有应用程序和SQL Server上的表,并从头开始再次创建应用程序,我就能够使用外部SQL数据库。 然后,应用程序从本地PC自动创建外部SQL数据库中的表。

无论如何,感谢ckal ,整个问题似乎都在命名约定中。从一开始我就没有使用正确的名字。

实际工作代码:

<强>的Web.config

  <connectionStrings>
    <add name="KMD1DBContext" connectionString="server=ustsql;database=LessonLs;Integrated Security=true" providerName="System.Data.SqlClient" />
  </connectionStrings>

<强> KMD1.cs

public class KMD1
{
    ...
}

public class KMD1DBContext : DbContext
{
    public DbSet<KMD1> kmds { get; set; }
}

<强> KMD1Controller.cs

private KMD1DBContext db = new KMD1DBContext();

外部SQL数据库中表的名称

KMD1