Создание поля первичного ключа в классе 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; задавать; }
Надеюсь, что это можно решить; Фернандо.