• 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 }


    作者:kissazi2
    出处:http://www.cnblogs.com/kissazi2/
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    stringstream用法
    来到上海了
    [转]强悍!情书居然能写得如此专业
    asp.net控件开发基础(23)
    当你遇到internal的时候
    asp.net控件设计时支持(3)
    asp.net控件设计时支持(5)
    CS中的缓存类,保证都看的懂
    快要毕业了
    asp.net控件设计时支持(4)
  • 原文地址:https://www.cnblogs.com/kissazi2/p/2843944.html
Copyright © 2020-2023  润新知