1

我已经在MS VS 2012 express下创建了应用程序。我正在使用实体框架来访问本地数据库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使用外部数据库。但无法检索或存储数据。我可以在Database Explorer中看到外部数据库,但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

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

的Web.config

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

这只是改名数据Conections数据库浏览器,但仍然被应用到接法本地文件。 – nevo 2013-05-07 15:18:12

+0

我发现这不是唯一的命名不匹配,thx – nevo 2013-05-08 08:36:49

0

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

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

无论如何,感谢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。在外部SQL数据库中的表CS

private KMD1DBContext db = new KMD1DBContext(); 

名称

KMD1