Size: a a a

var chat = new Chat();

2020 June 25

R

RA-TA-TATA in var chat = new Chat();
Yury Morozov
Транслирует команды в запросы
Видел подобную штуку в презентации
источник

R

RA-TA-TATA in var chat = new Chat();
источник

R

RA-TA-TATA in var chat = new Chat();
Если интересно кому
источник

YM

Yury Morozov in var chat = new Chat();
Именно поэтому я ушел с MS SQL на Постгрес
источник

Е

Енотечка in var chat = new Chat();
надо с фреймворка на кор уйти
источник

VL

Vova Lantsov in var chat = new Chat();
Yury Morozov
public static bool JsonContained(this DbFunctions _, object contained, object json);
       public static bool JsonContains(this DbFunctions _, object json, object contained);
       public static bool JsonExistAll(this DbFunctions _, object json, params string[] keys);
       public static bool JsonExistAny(this DbFunctions _, object json, params string[] keys);
       public static bool JsonExists(this DbFunctions _, object json, string key);
       public static string JsonTypeof(this DbFunctions _, object json);
Та это понятно, я думал именно конфиг в методе HasConversion не транслируется
источник

Е

Енотечка in var chat = new Chat();
только вот действительно ли оно надо?
источник

YM

Yury Morozov in var chat = new Chat();
Если перформанс - надо
источник

YM

Yury Morozov in var chat = new Chat();
Если пофигу - нет
источник

YM

Yury Morozov in var chat = new Chat();
в EF core только Table per Hierarchy пока
источник

YM

Yury Morozov in var chat = new Chat();
Короче смысл в том, что я могу в постгресе спокойно расширять классы всякими полями типа "категория" и искать серверсайд. А с MS SQL я так не могу...
источник

YM

Yury Morozov in var chat = new Chat();
public static IQueryable<T> QueryByCategories<T>(this DbSet<T> dbSet, IEnumerable<Category> categories) where T : class, ICategorizedEntity
       {
           int[] ids = categories.Select(x => x.Id).ToArray();
           return dbSet.Where(e => EF.Functions.JsonContains(EF.Property<List<int>>(e, "Categories"), JsonConvert.SerializeObject(ids)));
       }
типа такого
источник

YM

Yury Morozov in var chat = new Chat();
А вообще в EF можно делать типа такого, что крайне приятно
       public void SetGlobalQueryForSoftDelete<T>(ModelBuilder builder) where T : class, ISoftDelete
       {
           builder.Entity<T>().HasQueryFilter(item => !EF.Property<bool>(item, "IsDeleted"));
       }
источник

Е

Енотечка in var chat = new Chat();
Yury Morozov
public static IQueryable<T> QueryByCategories<T>(this DbSet<T> dbSet, IEnumerable<Category> categories) where T : class, ICategorizedEntity
       {
           int[] ids = categories.Select(x => x.Id).ToArray();
           return dbSet.Where(e => EF.Functions.JsonContains(EF.Property<List<int>>(e, "Categories"), JsonConvert.SerializeObject(ids)));
       }
типа такого
Я так и не понял при чем там де/сериализация
источник

YM

Yury Morozov in var chat = new Chat();
При том что поля Categories - это json
источник

Е

Енотечка in var chat = new Chat();
Ааа
источник

Е

Енотечка in var chat = new Chat();
Вот теперь все понятно
источник

YM

Yury Morozov in var chat = new Chat();
я ставлю ICategorizedEntity интерфейс на класс. Автоматически у меня  ModelBuilder добавит поля. И я могу искать по категориям
источник

YM

Yury Morozov in var chat = new Chat();
Причем на стороне базы
источник

Е

Енотечка in var chat = new Chat();
Я думал там какая-то черная магия
источник