제어 장치:
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);
위의 코드는 내가 작업중 인 모든 클래스를 나열합니다. 내 응용 프로그램을 실행하면 오류가 발생합니다.
“엔터티 유형에 키가 정의되어 있지 않습니다”와 함께 “모델 생성 중 하나 이상의 유효성 검사 오류가 발견되었습니다”.
답변
Model 클래스는 다음과 같이 변경되어야합니다.
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace MvcApplication1.Models
{
[Table("studentdetails")]
public class student
{
[Key]
public int RollNo { get; set; }
public string Name { get; set; }
public string Stream { get; set; }
public string Div { get; set; }
}
}
답변
-
학생 클래스의 확인 공용 멤버로 정의되어 있는지 확인 속성 W /
{get; set;}
(당신은 공개되어 변수 – 일반적인 실수를). -
장소
[Key]
선택한 재산의 상단에 주석을.
답변
이 문제가 발생할 수있는 몇 가지 이유가 있습니다. 내가 여기서 찾은 것들 중 일부는 내가 스스로 발견했다.
- 속성 이름이 이외의 다른 속성 인 경우 속성
Id
을 추가해야[Key]
합니다. - 키는 필드가 아닌 속성이어야합니다.
- 열쇠는
public
- 핵심 요구 사항은 서명되지 않은 유형이 같은 의미하는 CLS 규격 유형으로
uint
,ulong
허용되지 않습니다 등. - 이 오류는 구성 실수 로 인해 발생할 수도 있습니다 .
답변
이 게시물이 늦었지만이 솔루션이 도움이되었다는 것을 알고 있습니다.
[Key]
[Column(Order = 0)]
public int RoleId { get; set; }
[Key] 이후에 [Column (Order = 0)]을 1 씩 추가하여 추가 할 수 있음
[Key]
[Column(Order = 1)]
public int RoleIdName { get; set; }
기타…
답변
필자의 경우 “Entity Framework를 사용하여보기가있는 MVC 5 컨트롤러”를 만들 때 오류가 발생했습니다.
Model 클래스를 만든 후 프로젝트를 빌드해야했고 [Key] 주석을 사용할 필요가 없었습니다.
답변
[key]를 사용하면 효과가 없었지만 id 속성을 사용하면 효과가 있습니다. 이 클래스를 클래스에 추가하면됩니다.
public int id {get; set;}
답변
객체는로 사용되는 필드를 포함해야합니다. Primary Key
이름 Id
이 지정된 필드가 있으면 기본적으로 Entity Framework가 링크 할 객체의 기본 키가됩니다.
그렇지 않으면으로 [Key]
사용하려는 필드 위에 속성 Primary Key
을 추가해야하며 네임 스페이스도 추가해야합니다 System.ComponentModel.DataAnnotations
.
public class myClass
{
public int Id { get; set; }
[Key]
public string Name { get; set; }
}
https://stackoverflow.com/a/51180941/7003760