System.InvalidOperationException: The type MyContext+Northwind was not mapped.

System.InvalidOperationException: The type MyContext+Northwind was not mapped. Check that the type has not been explicitly excluded by using the Ignore method or NotMappedAttribute data annotation. Verify that the type was defined as a class, is not primitive, nested or generic, and does not inherit from EntityObject.

错误原因:

 entity framework不能将内部类与数据库匹配。

错误代码如下所示:

复制代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Data.Entity;
 6 using System.ComponentModel.DataAnnotations;
 7 
 8 namespace TestCodeFirst
 9 {
10     public class MyContext
11     {
12         public class Product
13         {
14             public int ProductID { get; set; }
15             public int CategoryID { get; set; }
16             [Required(ErrorMessage = "Product Name不能为空")]
17             public string ProductName { get; set; }
18             public Decimal? UnitPrice { get; set; }
19             public bool Discontinued { get; set; }
20             public virtual Category Category { get; set; }
21         }
22 
23         public class Category
24         {
25             public int CategoryID { get; set; }
26             public string CategoryName { get; set; }
27             public string Description { get; set; }
28             public byte[] Picture { get; set; }
29             public virtual ICollection<Product> Product { get; set; }
30         }
31         public class Northwind : DbContext
32         {
33             public DbSet<Product> Products { get; set; }
34             public DbSet<Category> Categorys { get; set; }
35         }
36     }
37 }
复制代码


解决的办法:Northwind作为内部类。正确的代码如下所示

复制代码
 1 namespace TestCodeFirst
 2 {
 3        public class Product
 4        {
 5            public int ProductID { get; set; }
 6            public int CategoryID { get; set; }
 7              [Required(ErrorMessage="Product Name不能为空")]
 8            public string ProductName { get; set; }
 9            public Decimal? UnitPrice { get; set; }
10            public bool Discontinued { get; set; }
11            public virtual Category Category { get; set; }
12        }
13 
14        public class Category
15        {
16            public int CategoryID { get; set; }
17            public string CategoryName { get; set; }
18            public string Description { get; set; }
19            public byte[] Picture { get; set; }
20            public virtual ICollection<Product> Product { get; set; }
21        }
22        public class Northwind:DbContext
23        {
24            public DbSet<Product> Products { get; set; }
25            public DbSet<Category> Categorys { get; set; }
26     }
27 }
复制代码

 

 

 

posted @   陈哈哈  阅读(1225)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
点击右上角即可分享
微信分享提示