我正在使用VS 2010 Premium.我有一个使用SqlCe 4.0和实体框架模型的MVC4项目.
型号是:
public class ProjectBuild
{
public int ProjectBuildID {get;set;}
public string name {get;set;}
}
public class ProjectBuildContext:DbContext
{
public DbSet<ProjectBuild> builds {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
下面是我的连接字符串:
add name="ProjectBuildContext" connectionString="Data Source=|DataDirectory|DB.sdf"
providerName="System.Data.SqlServerCe.4.0"
Run Code Online (Sandbox Code Playgroud)
当我尝试使用内置脚手架创建一个新的控制器时,我收到以下错误:
"无法检索ProjectBuild的元数据"."不支持使用相同的DbCompiledModel为不同类型的数据库服务器创建上下文.而是为每种使用的服务器创建单独的DbCompiledModel.
小智 29
我尝试了Fontanka16解决方案,但它没有用,结果发现我的DbContext类缺少定义目标CE数据库的默认构造函数.
这些是我的步骤摘要:
在我的DbContext类中添加了默认构造函数.
公共类SchoolContext:{的DbContext公共SchoolContext():基地( " 学校 "){} ...}
我的连接字符串是:
<add name="SchoolContext" connectionString="Data Source=|DataDirectory|School.sdf" providerName="System.Data.SqlServerCe.4.0" />
Run Code Online (Sandbox Code Playgroud)然后它奏效了.
小智 6
我是新手使用EF和MVC,但我发现如果你没有定义数据连接(注释掉)或者在web.config中重命名它,Visual Studio将允许你添加控制器.如果未定义连接,则EF将自动使用SQLExpress.添加控制器后,您可以将连接字符串添加回web.config,程序将按预期运行.
你应该总是初始化超用base(string).还发现connectionStringWeb.config 中的名称可能与您发送给超类构造函数的String不同.
例如:
<add name="MovieDBContext" ....... />
public class MovieDBContext : DbContext
{
public MovieDBContext() : base("Movie") { }
}
Run Code Online (Sandbox Code Playgroud)
所以你看,"MovidDBContect"不同于"Movie".
| 归档时间: |
|
| 查看次数: |
13487 次 |
| 最近记录: |