我在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
答案 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