6

Entity Framework 4.1 をリポジトリ パターンで使用しています (データベースは既に存在します)。私の問題は、GROUP というテーブル (予約済み) の存在です。これは、変更できない本番データベースです。

したがって、上記のすべての手法を使用すると、次のエラーが発生します。

'Group' は予約済みのキーワードであり、エスケープしない限りエイリアスとして使用することはできません。

テーブル名として以下を使用するように Entity Framework に指示することは可能ですか: [GROUP]

編集 db コンテキストを持つクラスは次のようになります (削除されます)

 public class AMTDatabase : DbContext
    {

      private IDbSet<GROUP> _Groups;
      public IDbSet<GROUP> Group
      {
        get { return _Groups ?? (_Groups = DbSet<GROUP>()); }
      }


    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {        
      base.OnModelCreating(modelBuilder);
      modelBuilder.Entity<GROUP>().ToTable("GROUP");      
    }
    //etc
    }

前もって感謝します

4

2 に答える 2

1

非常に奇妙に思えますが、上記のプロパティ名に注意してください。名前は Group で、Groups と読む必要があります。これが、このエラーが発生する理由です。修正したコードは次のとおりです。

private IDbSet<GROUP> _Groups;
        public IDbSet<GROUP> Groups
        {
            get { return _Groups ?? (_Groups = DbSet<GROUP>()); }
        }

今では魅力のように機能します!

于 2011-09-26T18:58:45.270 に答える
0

クラスに別の名前を付けてみて、次のようにデータベースで Group テーブルを使用するように伝えてください。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{        
    base.OnModelCreating(modelBuilder);
    modelBuilder.Entity<MyGroup>().ToTable("GROUP");      
}

または、エンティティ クラスの属性を直接使用します。

[Table("Group")]
public class MyGroup
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Column("GroupId")]
    public int GroupId { get; set; }
}
于 2011-09-26T22:12:08.147 に答える