контроллер:
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);
Код выше перечисляет все классы, над которыми я работаю. После запуска моего приложения я получаю сообщение об ошибке:
«Одна или несколько ошибок проверки были обнаружены во время генерации модели» наряду с «Типом сущности не определен ключ».
c#
.net
entity-framework
кодировщик
источник
источник
Ответы:
Класс Model должен быть изменен на:
источник
[Key]
), пока я не изменил типы данных (я изменил ихunsigned
), и работает только байт. Есть ли причина, по которой я не могу использоватьunsigned
значения?Убедитесь, что общедоступные члены класса ученика определены как свойства w /
{get; set;}
(у вас публичные переменные - распространенная ошибка).Поместите
[Key]
аннотацию поверх выбранной вами недвижимости.источник
Это может произойти по нескольким причинам. Некоторые из них я нашел здесь , другие я обнаружил самостоятельно.
Id
, вам необходимо добавить[Key]
к нему атрибут.public
uint
иulong
т. Д., Не допускаются.источник
private set
из некоторых свойств во время очистки. Результатом было "EntityType не имеет определенной ключом ошибки". Так что остерегайтесь инструментов очистки, удаляющих необходимый код.ID
,Id
,ClassNameID
,ClassNameId
вам не нужно иметь , чтобы использовать[Key] attribute
я знаю, что этот пост опоздал, но это решение помогло мне:
добавлен [Столбец (Порядок = 0)] после того, как [Ключ] может быть добавлен с приращением на 1:
и т.д...
источник
В моем случае я получал ошибку при создании «Контроллер MVC 5 с представлением, используя Entity Framework».
Мне просто нужно было создать проект после создания класса Model, и мне не нужно было использовать аннотацию [Key].
источник
Использование [ключа] не работает для меня, но использование свойства id делает это. Я просто добавляю это свойство в мой класс.
источник
[Key]
, но свойство, называемое "id
", также будет работать.Объект должен содержать поле, которое будет использоваться как
Primary Key
, если у вас есть поле с именем,Id
то по умолчанию это будет первичный ключ объекта, на который будет ссылаться Entity Framework.В противном случае вам следует добавить
[Key]
атрибут над тем полем, которое вы хотите использовать в качествеPrimary Key
, и вам также необходимо добавить пространство именSystem.ComponentModel.DataAnnotations
:https://stackoverflow.com/a/51180941/7003760
источник
Кроме того, помните, не забудьте добавить общедоступное ключевое слово, как это
Вы должны использовать ключевое слово Public, как это
источник
Причина, по которой EF Framework запрашивает «нет ключа», заключается в том, что EF Framework нуждается в первичном ключе в базе данных. Чтобы декларативно сообщить EF, какое свойство является ключом, вы добавляете
[Key]
аннотацию. Или, самый быстрый способ, добавитьID
свойство. Затем EF-фреймворкID
по умолчанию будет использоваться в качестве первичного ключа.источник
partial
класс. Вы можете создать второй файл какpartial
класс с тем же именем и снова добавить свойство с[Key]
атрибутом.Вам не нужно все время использовать ключевой атрибут. Убедитесь, что в файле сопоставления правильно указан ключ
и не забудьте добавить отображение в OnModelCreating репозитория
источник
Для меня модель была в порядке. Это было потому, что у меня было 2 разные версии структуры сущностей. Одна версия для веб-проекта и другая для общего проекта, который содержит модели.
Мне просто нужно было объединить пакеты nuget .
Наслаждайтесь!
источник
Все правильно, но в моем случае у меня есть два класса, как это
После удаления высшего класса у меня все работает нормально.
источник