16

私は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; }
    }
}

しかし、今までの結果はありません。注:MVC4を使用しています

4

4 に答える 4

23

説明

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);
    }
}

モード情報

于 2012-04-19T21:13:19.340 に答える
1

[EdmScalarPropertyAttribute(EntityKeyProperty = true、IsNullable = false)]プロパティを使用して、キーフィールドを示してみてください。

通常のフィールドは、EntityKeyPropert=falseになります。

于 2012-04-19T21:17:04.830 に答える
0
   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);
   }
   }
于 2019-12-13T19:49:12.353 に答える
-2

こんにちはピーターそれはあなたが「s」を逃しているのを見ました

アカウントintは次のようになります。

public int AccountsTypeID {get; セットする; }

それが解決できることを願っています。フェルナンド。

于 2013-12-27T13:52:24.067 に答える