为啥我收到错误实体类型 LAB_INVOICE_VIEW 不是当前上下文模型的一部分。?
Posted
技术标签:
【中文标题】为啥我收到错误实体类型 LAB_INVOICE_VIEW 不是当前上下文模型的一部分。?【英文标题】:why I got error The entity type LAB_INVOICE_VIEW is not part of the model for the current context.?为什么我收到错误实体类型 LAB_INVOICE_VIEW 不是当前上下文模型的一部分。? 【发布时间】:2022-01-15 19:54:17 【问题描述】:我正在使用 VS2015 并尝试将新表添加到我的实体数据模型中,但是当我保存它时,它删除了文件 context.cs 文件下的所有数据,并显示错误之前使用的所有模型从实体模型中删除,
所以我尝试手动将模型添加到我的 DBcontext 我在此链接中找到了步骤:
https://***.com/questions/33426289/manually-create-model-for-single-table-in-entity-framework
我做了以下步骤:
1- 创建数据库视图 LAB_INVOICE_VIEW
2- 创建模型
3- 手动将模型添加到我的 DBcontext 中:
public virtual DbSet<LAB_INVOICE_VIEW> LAB_INVOICE_VIEW get; set;
4- 将配置也添加到模型列下的模型中:
class MyTableConfiguration : EntityTypeConfiguration<LAB_INVOICE_VIEW>
public MyTableConfiguration()
ToTable("dbo.LAB_INVOICE_VIEW");
5- 将覆盖代码添加到 Dbcontext.cs :
protected override void OnModelCreating(DbModelBuilder modelBuilder)
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new MyTableConfiguration());
6- 我将连接字符串从 EF 字符串更改为 ADO.NET 字符串,但出现错误:
An exception of type 'System.Data.Entity.ModelConfiguration.ModelValidationException' occurred in EntityFramework.dll but was not handled in user code
Additional information: One or more validation errors were detected during model generation:
AljawdahNewSite.Models.Customers: : EntityType 'Customers' has no key defined. Define the key for this EntityType.
AljawdahNewSite.Models.Departments: : EntityType 'Departments' has no key defined. Define the key for this EntityType.
AljawdahNewSite.Models.Customers_Price_List: : EntityType 'Customers_Price_List' has no key defined. Define the key for this EntityType.
AljawdahNewSite.Models.LabTests: : EntityType 'LabTests' has no key defined. Define the key for this EntityType.
AljawdahNewSite.Models.Groups: : EntityType 'Groups' has no key defined. Define the key for this EntityType.
AljawdahNewSite.Models.Lab_Sample_status: : EntityType 'Lab_Sample_status' has no key defined. Define the key for this EntityType.
AljawdahNewSite.Models.Patients: : EntityType 'Patients' has no key defined. Define the key for this EntityType.
7- 我尝试了链接中的解决方案,但仍然出现错误:
https://***.com/questions/20688922/the-entity-type-type-is-not-part-of-the-model-for-the-current-context
我需要你的帮助。
【问题讨论】:
从您的描述来看,并不清楚发生了什么以及您是如何继续的。您还在使用 EDMX 吗?因为如果你这样做了,OnModelCreating
将不会运行。
@GertArnold 是的,我将 EDMX 与以前使用过的表和模型一起使用,没有任何错误,但只有最后一个模型我无法将其添加到图表中,因此我尝试手动将其添加到上下文中
但是我不明白第6步和第7步。EDMX需要一个实体连接字符串。你是如何修复其他错误的?看起来您正在混合使用数据库优先和代码优先的代码。
@GertArnold no.6 一种解决方案说将 EF 连接字符串更改为 ADO.NET,它会起作用我更改了它,但我遇到了与已添加到 EDMX 的模型相关的另一个错误,第 7 号网站一些解决方案如何解决这个问题我尝试过但仍然出现错误,我可以添加多个连接字符串并将其与最后一个模型一起使用 ADO.NET 方式吗?
我看不到您的代码,但看起来您必须完全删除 EDMX。不能与OnModelCreating
中的其他映射配置结合使用。
【参考方案1】:
我删除了 EDMX 文件并再次创建了新的 EF 并添加了所有模型,这解决了我的问题。
谢谢格特先生
【讨论】:
以上是关于为啥我收到错误实体类型 LAB_INVOICE_VIEW 不是当前上下文模型的一部分。?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我会收到“类型 [class ...] 不是注册实体?”
我收到此错误:“实体类型 'DisplayFormatAttribute' 需要定义主键。”
为啥我收到错误“类型‘PublicTableViewController’没有成员‘handleRefresh’’