下面的代码引发异常“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软件包更新为最新版本。例如,在程序包管理器控制台中,运行:

Update-Package EntityFramework

关于c# - 如何在 Entity Framework 数据上下文中的属性名称中使用sql保留关键字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9632051/

10-10 09:20