6

我正在使用具有存储库模式的实体框架 4.1(数据库已经存在)。我的问题是存在一个名为 GROUP 的表(保留)。这是我无法更改的生产数据库。

因此,使用上述所有这些技术,我收到以下错误:

'Group' 是保留关键字,不能用作别名,除非它被转义。

是否可以告诉实体框架使用以下作为表名:[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

Well it seems very weird, but notice the property name above: the name is Group and it should read Groups! This is the reason i'm getting this error. The corrected code is the following:

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

Works like a charm now!

于 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 回答