Как использовать зарезервированное ключевое слово sql в имени свойства в контексте данных Entity Framework?

Следующий код выдает исключение " EntitySqlException: 'Group' является зарезервированным ключевым словом и не может использоваться в качестве псевдонима, если только он не экранирован. Около строки 1, столбца 11.

Мой вопрос: во-первых, почему существует какая-либо связь между именем коллекции, которую я выбираю в моем контексте данных, и, по-видимому, сгенерированным запросом sql?

И, во-вторых, есть ли что-нибудь, что я могу сделать, кроме переименования свойства в моем контексте, для его разрешения (я знаю, что имя глупое, есть причины, по которым я не могу изменить имя, как бы мне этого ни хотелось, что Я не буду сюда заходить)?

Возможно, я могу что-то сделать с modelBuilder?

public class GroupEntity
{
    public int GroupEntityId { get; set; }
    public string Name { get; set; }
}

public class MyContext : DbContext
{
    public MyContext(string nameOrConnectionString)
        : base(nameOrConnectionString)
    {
        Group = Set<GroupEntity>();
    }

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

    public DbSet<GroupEntity> Group { get; private set; }
}

//...
using (var ctx = new MyContext("valid connection string"))
{
    var e = ctx.Group.Count(a => a.GroupEntityId % 2 == 0);
    // Exception thrown here
    Console.WriteLine(e);
}
9
задан kmp 9 March 2012 в 09:56
поделиться