猿问

EntityType没有键定义错误

控制器:


using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using MvcApplication1.Models;

using System.ComponentModel.DataAnnotations.Schema;


namespace MvcApplication1.Controllers

{

    public class studentsController : Controller

    {

        //

        // GET: /students/


        public ActionResult details()

        {

            int id = 16;

            studentContext std = new studentContext();

           student first = std.details.Single(m => m.RollNo == id);

            return View(first);

        }


    }

}

DbContext模型:


using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Data.Entity;


namespace MvcApplication1.Models

{

    public class studentContext : DbContext

    {

        public DbSet<student> details { get; set; }

    }

}

模型:


using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.ComponentModel.DataAnnotations.Schema;


namespace MvcApplication1.Models

{

    [Table("studentdetails")]

    public class student

    {

        public int RollNo;

        public string Name;

        public string Stream;

        public string Div;

    }

}

数据库表:


CREATE TABLE [dbo].[studentdetails](

    [RollNo] [int] NULL,

    [Name] [nvarchar](50) NULL,

    [Stream] [nvarchar](50) NULL,

    [Div] [nvarchar](50) NULL

)  

在global.asax.cs中


Database.SetInitializer<MvcApplication1.Models.studentContext>(null);

上面的代码列出了我正在处理的所有类。在运行我的应用程序时收到错误:


“模型生成期间检测到一个或多个验证错误”以及“实体类型未定义键”。


子衿沉夜
浏览 629回答 3
3回答

喵喔喔

确保将学生班级的公共成员定义为带有w的属性{get; set;}(您是公共变量,这是一个常见错误)。[Key]在所选属性的顶部放置一个注释。

心有法竹

发生这种情况有多种原因。我在这里找到了其中一些,其他是我自己发现的。如果该属性的名称不是Id,则需要为其添加[Key]属性。密钥必须是属性,而不是字段。关键是 public关键需要一个符合CLS的类型,这意味着无符号的类型,如uint,ulong等都是不允许的。此错误也可能是由配置错误引起的。
随时随地看视频慕课网APP
我要回答