Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server ';集团';是保留关键字,除非转义,否则不能用作别名_Sql Server_Entity Framework_Reserved Words - Fatal编程技术网

Sql server ';集团';是保留关键字,除非转义,否则不能用作别名

Sql server ';集团';是保留关键字,除非转义,否则不能用作别名,sql-server,entity-framework,reserved-words,Sql Server,Entity Framework,Reserved Words,我正在使用EntityFramework4.1和repository模式(数据库已经存在)。 我的问题是存在一个名为GROUP(保留)的表。这是一个我无法更改的生产数据库 因此,使用上述所有技术,我得到以下错误: “Group”是保留关键字,除非转义,否则不能用作别名 是否可以告诉Entity Framework使用以下名称作为表名: [小组] 编辑 具有db上下文的类如下所示(精简) 公共类AMTDatabase:DbContext { 私有IDbSet_组; 公共IDbSet组 { 获取{r

我正在使用EntityFramework4.1和repository模式(数据库已经存在)。 我的问题是存在一个名为GROUP(保留)的表。这是一个我无法更改的生产数据库

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

“Group”是保留关键字,除非转义,否则不能用作别名

是否可以告诉Entity Framework使用以下名称作为表名: [小组]

编辑 具有db上下文的类如下所示(精简)

公共类AMTDatabase:DbContext
{
私有IDbSet_组;
公共IDbSet组
{
获取{return\u Groups???(\u Groups=DbSet());}
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{        
基于模型创建(modelBuilder);
modelBuilder.Entity().ToTable(“组”);
}
//等
}

提前感谢

看起来很奇怪,但是请注意上面的属性名称:名称是Group,应该是Groups!这就是我出错的原因。更正的代码如下所示:

private IDbSet<GROUP> _Groups;
        public IDbSet<GROUP> Groups
        {
            get { return _Groups ?? (_Groups = DbSet<GROUP>()); }
        }
私有IDbSet\u组;
公共集组
{
获取{return\u Groups???(\u Groups=DbSet());}
}

现在真是魅力四射

尝试为您的类使用另一个命名,并告诉他使用数据库中的组表,如下所示:

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

谁给了你这个错误?它是在Visual Studio中还是在您的数据库中?你能发布你的类中有问题的代码吗?@AlexandreJobin:我在VS中发现了错误。请参阅编辑。刚刚发现了相同的错误,结果对我来说很奇怪。即使使用
context.Set().ToList()
也有效,但
context.Group.ToList()
无效。奇怪…那么这是什么意思。。。我糊涂了!我们不能为DBSet选择任何我们想要的名称吗?所以它看起来像。我刚刚测试过如何给
DbSet
命名,比如
Select
Join
Where
。它们都抛出相同的异常。EF似乎在对照SQL关键字列表进行检查。实体名称
本身不是问题。你说得对!查看映射指令后,我们知道实体名称可以是。。。无论什么但DBSet不能。嗯,今天学到了一些新东西!!非常感谢!
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; }
}