EF 4.1 Code First错误 - 实体类型SomeType不是当前上下文的模型的一部分

rov*_*sen 42 entity-framework code-first entity-framework-4.1

在使用EF代码时,我会在不同时间收到以下错误:

实体类型SomeType不是当前上下文的模型的一部分.

导致此错误的可能原因是什么?

rov*_*sen 40

可能因为:

  • DbContext配置了错误的连接字符串
  • 指定的实体实际上未在配置中映射

  • 检查连接字符串.当我将一个.edmx文件的连接字符串复制到另一个时,我遇到了同样的问题.这是行不通的. (4认同)
  • 我正在手动构建连接字符串,所以对我来说这是因为我向`EntityConnectionStringBuilder`的`MetaData`属性提供了一个不正确的程序集(以"res:// MyAssemblyThatContainsTheModel /"的形式).我给它一个没有实体数据模型嵌入资源的程序集,它只是构建了一个没有实体的模型.这是因为我使用`Assembly.GetCallingAssembly()`由于JIT的方法内联而返回了错误的程序集.我使用`[MethodImpl(MethodImplOptions.NoInlining)]`标记了内联方法,并修复了问题. (2认同)

Gra*_*amF 15

当我继承自DbContext的类没有将模型声明为属性时,我得到了这个.例如,我忽略了在下面的代码中为FooModel添加一个属性:

public class MyDBContext : DbContext
{
    public DbSet<FooModel> FooModels{ get; set; }

    // etc. ... 
}
Run Code Online (Sandbox Code Playgroud)

  • +1这正是我面临的问题。谢谢! (2认同)

Dou*_*zey 5

如果您尝试在一对多关联中对子集合设置EntityState,则会出现此消息.

例如; 如果下面的代码片段中ParentEnt和ChildEnt之间存在一对多关联,则会显示以下错误消息:

实体类型Hash1Type不是当前上下文的模型的一部分.

MyDbContext.Entry(ParentEnt.ChildEnt).State = EntityState.Unchanged;
Run Code Online (Sandbox Code Playgroud)

以下更改不会产生错误:

MyDbContext.Entry(ParentEnd.ChildEnt.First).State = EntityState.Unchanged;
Run Code Online (Sandbox Code Playgroud)

注意,First()在这种情况下的使用可以表示t


归档时间:

查看次数:

38226 次

最近记录:

10 年,1 月 前