Создание поля первичного ключа в классе MVC

Я новичок в MVC и С#. Я просто наткнулся на это и нашел интересным. Я столкнулся с проблемой, которая не позволит мне продолжить. Вот мой код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; 

namespace MyHotel.Models
{
    public class AccountTypes
    {
        public int AccountTypeID { get; set; }
        public string AccountTypeName { get; set; }
    }
}

Затем я создал контроллер и представление.

И для этого я продолжаю получать эту ошибку:

Во время генерации модели были обнаружены одна или несколько ошибок проверки:

System.Data.Edm.EdmEntityType: : EntityType 'AccountTypes' has no key defined. Define the key for this EntityType.
System.Data.Edm.EdmEntitySet: EntityType: EntitySet "AccountTypes" is based on type "AccountTypes" that has no keys defined.

Я google, что ответы должны были добавить [Key] поверх public int AccountTypeID { get; set; }, чтобы он выглядел так:

namespace MyHotel.Models
{
    public class AccountTypes
    {
        [Key]
        public int AccountTypeID { get; set; }
        public string AccountTypeName { get; set; }
    }
}

Но результата пока нет. Примечание. Я использую MVC 4

Ответ 1

Описание

Entity Framework CodeFirst распознает ключ по умолчанию по имени. Допустимые имена: Id или <YourClassName>Id.

Ваше свойство должно иметь имя Id или AccountTypesId

Другой способ - использовать ModelBuilder для указания ключа.

Пример

public class MyDbContext : DbContext
{
    public DbSet<AccountTypes> AccountTypes { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<AccountTypes>.HasKey(x => x.AccountTypeID);
        base.OnModelCreating(modelBuilder);
    }
}

Информация о режиме

Ответ 2

Попробуйте использовать свойство [EdmScalarPropertyAttribute (EntityKeyProperty = true, IsNullable = false)] для указания поля ключа.

Регулярное поле будет идти с EntityKeyPropert = false.

Ответ 3

Привет, Питер, вы не видите "s"

Ваша учетная запись int должна быть:

public int AccountsTypeID {get; задавать; }

Надеюсь, что это можно решить; Фернандо.