Il seguente codice genera l'eccezione "EntitySqlException: 'Gruppo' è una parola chiave riservata e non può essere utilizzata come alias, a meno che non sia sfuggita. Vicino alla riga 1, colonna 11".Come posso utilizzare una parola chiave riservata sql nel nome di una proprietà in un contesto di dati del framework di entità?
La mia domanda è in primo luogo perché c'è qualche relazione tra il nome della collezione che scelgo sul mio contesto dati e, sembra che la query sql che viene generata?
E in secondo luogo, c'è qualcosa che posso fare, oltre a rinominare la proprietà nel mio contesto, per risolverlo (so che il nome è stupido, ci sono ragioni per cui non posso cambiare il nome, per quanto mi piacerebbe, che non entrerò qui)?
C'è qualcosa che posso fare con il ModelBuilder forse?
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);
}
Avete già capito che il nome è stupido, così uno non :) Gruppo è sia un termine generico (invece che relativo ai dati che detiene) e una parola riservata per LINQ. Hai provato la sintassi completa di 'var e = FROM a in ctx.Group' per vedere se si intrufola? Se * potresti * spiegare perché non puoi rinominarlo come aiuto? –
Grazie, sì, i motivi per cui non posso cambiare il nome non sono tecnici, quindi non credo che potrebbero aiutare qui. Per inciso, ci sono altre cose che avrei potuto chiamare, che comporterebbero la stessa eccezione, ad esempio "Uso, Come, Seleziona", quindi sono interessato solo a sapere se è possibile non rinominare la proprietà prima di usare il fatto che non è il motivo per cambiarlo (insieme agli altri motivi che hai menzionato), se vedi cosa intendo :-) – kmp
Per ripetere: hai provato la sintassi completa di 'var e = FROM a in ctx.Group' LINQ invece per vedere se si intrufola? In teoria crea lo stesso IL sotto il cofano, ma vale la pena provare. –