我正在使用Entity Framework 4.1和存储库模式(数据库已经存在)。 我的问题是存在一个名为GROUP的表(保留)。这是一个我无法改变的生产数据库。
所以,使用上面的所有这些技术我得到以下错误:
'Group'是保留关键字,除非被转义,否则不能用作别名。
是否可以告诉Entity Framework使用以下作为表名: [组]
修改 具有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
}
提前致谢
答案 0 :(得分:1)
好吧看起来很奇怪,但请注意上面的属性名称:名称是Group,它应该读取组!这就是我收到此错误的原因。更正后的代码如下:
private IDbSet<GROUP> _Groups;
public IDbSet<GROUP> Groups
{
get { return _Groups ?? (_Groups = DbSet<GROUP>()); }
}
现在就像魅力一样!
答案 1 :(得分:0)
尝试为您的类使用另一个命名并告诉他在数据库中使用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; }
}