Как я могу использовать SQL зарезервированное ключевое слово в названии свойства в контексте данных структуры объекта?

StackOverflow https://stackoverflow.com//questions/9632051

Вопрос

Следующий код бросает исключение « 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);
}
.

Это было полезно?

Решение

Это фиксируется в EF 4.3.1 и EF 5.0 Beta1.Пожалуйста, используйте Nuget, чтобы обновить пакет EntityFramework до последней версии.Например, в консоли Manager Package Run:

Update-Package EntityFramework
.

Другие советы

Так что через некоторое время смотрят на это, я пришел к выводу, что ответ на мой вопрос заключается в том, что это невозможно.

Это не массивная сделка, так как я могу переименовать свойство, но я думаю, что это то, что должно «просто работать», и поэтому я поднял проблему MS Connect для нее, что можно найти здесь: Использование зарезервированного ключевого слова SQL в качестве названия коллекции на DBContext вызывает исключение .Если это будет разрешено или отклонено, потому что на самом деле возможно, я обновит этот ответ.

Вы всегда можете сделать это множеством, как группы, чтобы сделать его «не зарезервированным» словом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top