Đoạn mã sau ném ngoại lệ "EntitySqlException: 'Nhóm' là từ khóa dành riêng và không thể được sử dụng làm bí danh, trừ khi nó được thoát. Gần dòng 1, cột 11".Làm cách nào để sử dụng từ khóa được đặt trước sql trong tên của thuộc tính trong ngữ cảnh dữ liệu khung thực thể?
Câu hỏi của tôi trước hết là tại sao có bất kỳ mối quan hệ nào giữa tên bộ sưu tập mà tôi chọn trên ngữ cảnh dữ liệu của mình và, dường như truy vấn sql được tạo ra?
Và thứ hai, tôi có thể làm bất cứ điều gì, ngoài việc đổi tên tài sản trong bối cảnh của tôi, để giải quyết nó (tôi biết tên là ngu ngốc, có lý do tại sao tôi không thể thay đổi tên, nhiều như tôi muốn, rằng tôi sẽ không đi vào đây)?
Tôi có thể làm gì với 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);
}
Bạn đã nhận ra rằng tên đó là ngu ngốc, vì vậy +1 ở đó :) Nhóm là cả cụm từ chung chung (thay vì liên quan đến dữ liệu mà nó nắm giữ) và một từ dành riêng cho LINQ. Bạn đã thử đầy đủ 'var e = FROM a trong ctx.Group' LINQ cú pháp thay vì để xem nếu nó lẻn qua? Nếu bạn * có thể * giải thích tại sao bạn không thể đổi tên nó có thể giúp ích? –
Cảm ơn, vâng, lý do tại sao tôi không thể thay đổi tên không phải là kỹ thuật vì vậy tôi không nghĩ rằng họ sẽ giúp đỡ ở đây. Ngẫu nhiên, có những thứ khác tôi có thể gọi nó là kết quả trong cùng một ngoại lệ, ví dụ "Sử dụng, Như, Chọn" vì vậy tôi chỉ muốn biết nếu có thể không đổi tên thuộc tính trước khi tôi sử dụng thực tế nó không phải là lý do để thay đổi nó (cùng với các lý do khác mà bạn đã đề cập), nếu bạn thấy ý tôi là :-) – kmp
Để lặp lại: Bạn đã thử cú pháp LINQ đầy đủ 'var e = FROM a in ctx.Group' thay vào đó để xem liệu nó có lén lút qua không? Về lý thuyết nó tạo ra cùng một IL dưới mui xe, nhưng giá trị một thử nhanh chóng. –