实体类型<t>不是当前上下文的模型的一部分</t>

时间:2015-03-31 18:27:00

标签: c# entity-framework

我已经测试了模型中的其他表,但它们正在运行。但是,我添加了两个新表,它们不在模型中。

如何确保数据库表是模型的一部分?

此代码中未调用

OnModelCreatingenter image description here

The entity type AppToLeadRequestLine is not part of the model for the current context.

向表中添加项目时会抛出此异常。

public void Add<T>(T obj) where T : class
{
   Set<T>().Add(obj);
}

我将这两个表添加到数据库中。

enter image description here

将这两个表添加到数据库后,我使用Update Model from Database在模型中生成它们,并且两个表都出现在模型中。 enter image description here

当我查看表映射时,它们似乎映射到正确的POCO。我不是百分百肯定的。

enter image description here enter image description here

这些类看起来像这样: enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

OnModelCreating未被调用 - 正如您所指出的那样 - 因此我可以确定您使用的是模型优先方法(并且代码优先)。在这种情况下,您负责映射的所有Here is a good article on the topic

似乎RequestIdAppToLeadRequest类的外键 - 如果是这种情况,则必须自己在两个类中声明public virtual语句。

例如 - 在AppToLeadRequest类的底部,它应该包含:

public virtual ICollection<AppToLeadRequestLine> AppToLeadRequestLines { get; set; }

并且,在AppToLeadRequestLine类的底部,它应该包含:

public virtual AppToLeadRequest AppToLeadRequest { get; set; }

我还会将RequestId更改为AppToLeadRequestId,以遵循<class name>Id格式。