MVCとC#は初めてです。偶然見つけて面白かったです。続行できない問題が発生しました。これが私のコードです:
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; }
}
}
その後、コントローラーとビューを作成しました。
そして、これのために、私はこのエラーを得続けます:
モデルの生成中に1つ以上の検証エラーが検出されました:
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.
答えは[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を使用しています
Entity Framework CodeFirstは、デフォルトで名前によってキーを認識します。有効な名前はId
または<YourClassName>Id
。
プロパティの名前はId
またはAccountTypesId
にする必要があります
もう1つの方法は、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);
}
}
[EdmScalarPropertyAttribute(EntityKeyProperty = true、IsNullable = false)]プロパティを使用して、キーフィールドを指定してみてください。
通常のフィールドはEntityKeyPropert = falseになります。
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);
}
}