Я действительно надеюсь, что это не дубликат, я прочитал десятки связанных / похожих вопросов.
Я создаю DbContext только для чтения, во-первых, уверен, что это возможно, я создал DbSets и попыталсянастроить их для сопоставления с оператором SQL, я думал, что делал это в прошлом, но, похоже, я ошибаюсь.
Поэтому я изменил стратегию и решил изменить все DbSets на DbQuery. После этого я был действительно счастлив, потому что это действительно отражает природу DbContext, он читается только как Query, но не как DbSet.
Так что теперь с DbQuery я могу:
- Использование ToView для сопоставления запроса с представлением в базе данных
- Использование ToQuery для извлечения данных посредством запроса существующих сущностей в контексте
Это ограничение для меня,Я не хочу создавать представления и не хочу отображать все объекты в контексте, есть ли для меня альтернативное решение?
Код для случая 1:
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Query<MyEntity>().ToView("my-view-name");
[...]
Код для случая 2:
public virtual DbSet<MyEntity> MyEntities { get; set; }
public virtual DbSet<MyEntity2> MyEntity2s { get; set; }
public virtual DbSet<MyEntity3> MyEntity3s { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Query<MyEntity>().ToQuery(() => MyEntity2.Include(MyEntity3).Select(me2 => new MyEntity(me2.Property1, me2.Property2, me2.MyEntity3.Property1 ....) );
[...]