Następujący kod zgłasza wyjątek "EntitySqlException:" Group "jest zastrzeżonym słowem kluczowym i nie można go używać jako aliasu, chyba że jest on uniknięty. Blisko linii 1, kolumna 11".Jak używać słowa kluczowego sql sql w nazwie właściwości w kontekście danych struktury jednostki?
Moje pytanie brzmi po pierwsze: dlaczego istnieje jakaś relacja między nazwą kolekcji, którą wybieram w kontekście danych a zapytaniem, jakie jest wygenerowane zapytanie sql?
Po drugie, czy jest coś, co mogę zrobić, oprócz zmiany nazwy nieruchomości w moim kontekście, aby ją rozwiązać (wiem, że nazwa jest głupia, są powody, dla których nie mogę zmienić nazwiska, tak jak bym chciał, że nie wejdę tutaj)?
Czy jest coś, co mogę zrobić z modelemBuilder?
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);
}
Już sobie sprawę, że nazwa jest głupi, więc +1 tam :) Group jest zarówno ogólny termin (zamiast odnoszące się do danych, które posiada) i zarezerwowane słowo dla LINQ. Czy próbowałeś zamiast tego pełnej składni LINQ 'var e = FROM in ctx.Group', aby sprawdzić, czy się przedostaje? Jeśli * możesz * wyjaśnić, dlaczego nie możesz zmienić nazwy, która może pomóc? –
Dzięki, tak, powody, dla których nie mogę zmienić nazwy, nie mają charakteru technicznego, więc nie sądzę, że mogliby tu pomóc. Nawiasem mówiąc, są jeszcze inne rzeczy, które mógłbym nazwać, co skutkowałoby tym samym wyjątkiem, na przykład "Using, As, Select", więc jestem zainteresowany, aby wiedzieć, czy nie można zmienić nazwy nieruchomości, zanim skorzystam z faktu, że to nie jest powód, aby to zmienić (wraz z innymi powodami, o których wspomniałeś), jeśli widzisz co mam na myśli :-) – kmp
Powtarzam: Czy wypróbowałeś pełną składnię 'var e = FROM in ctx.Group' LINQ zamiast tego sprawdzić, czy się przedostaje? Teoretycznie tworzy to samo IL pod maską, ale warto spróbować. –