«Группа» является зарезервированным ключевым словом и не может использоваться в качестве псевдонима, если его не экранировать - PullRequest
6 голосов
/ 26 сентября 2011

Я использую Entity Framework 4.1 с шаблоном хранилища (база данных уже существует). Моя проблема заключается в существовании таблицы с именем GROUP (которая зарезервирована). Это производственная база данных, которую я не могу изменить.

Итак, используя все вышеперечисленные методы, я получаю следующую ошибку:

'Группа' является зарезервированным ключевым словом и не может использоваться в качестве псевдонима, если его не экранировать.

Можно ли указать Entity Framework использовать следующее в качестве имени таблицы: [GROUP]

EDIT Класс с контекстом 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
    }

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

Ну, это кажется очень странным, но обратите внимание на имя свойства выше: имя Group, и оно должно читаться как Groups!Это причина, почему я получаю эту ошибку.Исправленный код выглядит следующим образом:

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

Теперь работает как шарм!

0 голосов
/ 27 сентября 2011

Попробуйте использовать другое наименование для своего класса и скажите ему, чтобы он использовал таблицу 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; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...