Начиная от примитивных текстовых форумов заканчивая подписками на сервис ChatGPT - все строится на списках, элементах, связанных списках, которые хранятся в базе данных.
Формочки сами по себе никому не нужны, за ними большой слой логики.
Ага, и логика эта - или валидация, или события (и их обработчики). Вот это поворот. Или отдельные микросервисы.
Ну давайте копнём глубже. Вы накидали за 2 часа условно супер-универсальный CRUD. Подойдём основательно и выделим больше времени. Допустим 2 недели. Сделали CRUD, теперь можно редактировать любые таблички, вносить данные. Что дальше? :) Можно разогнать табун разработчиков. Теперь можно вводить любые данные. Программа готова на века :)
Все, добавляю IdentityServer и раздаю права. Делаю описания таблиц и прав на json. Назовите мне что я не смогу сделать :). (или значительно ускорить разработку, как и наивно полагали инженеры Microsoft, когда делали свой генератор CRUD)
Похоже в Microsoft-то дураки набитые сидят, и делают генераторы формочек :)
Если вам удобен всего 1 вариант — это не означает что он удобен для всех
Конечно, репозиторий BrainFuck-а довольно популярен. Однако даже при поддержке всякие чудеса вроде "Ой, а классы унаследованные от Control не надо регистрировать в контейнерах" - да, если это asp net, это может быть терпимо. Если у вас в Бэкенде на добрую сотню-две тысяч строк таблицы(!) можно добавлять из нескольких точек(настолько часто меняется схема данных?!) - это уже не отлаживается и не поддерживается.
Потому что найти все ссылки на вызов метода и найти 10 вариантов реализации одной и той же функциональности - это разница в 10 раз по времени.
Не говоря уже о том, что если эти практики попадут в OpenSource и будет поддержка со стороны IDE - тогда может еще терпимо. Но если это Ваш код, который не фиксирует точки функциональности - это конец проекта.
А может, всё-таки погуляете по ссылкам в документации?
Погуглил, не нашел методов GetTables, GetLinks и подобных. И написал аж 200 строк кода :)
При том, что вы во всех комментариях пишете тут именно про таблицы, а не про сущности. Вот мне и показалось что вам нужны именно они.
Да нет, мне нужны таблицы из контекста и описание моделей данных(сущности). А так же вся необходимая информация из сущностей.
Сама по себе задача не имеет практического смысла.
Ого, лепить тысячи форм CRUD для миллионов таблиц никому не нужно? А как же 1С?
Это вообще непонятно, зачем получать список таблиц
Делать CRUD без таблиц?
Всё ещё не понимаю. А что делать с деревьями?
А я откуда знаю, это уже уровень Отображения. Скорее всего я не буду лепить какие-нибудь CompositeIndex-ы для глубины блуждания по дереву в 100 :). Придется написать немного на JavaScript. Ну и для глубины в 100500 видимо придется как-то передавать структуру индексов.
Прошу не принимать на свой лично счёт, я не придираюсь :) Но выглядит это как в древней картинке "Вот так с помощью нехитрых приспособлений буханка белого хлеба превратилась в троллейбус".
Так в заголовке все написано, я делаю свой генератор CRUD. Часть 1 - получаем данные о таблицах и их данных.
Нравится часами-днями рисовать банальные CRUD-ы - пожалуйста. Благо большинство задач из Веб-а именно из этого разряда - нам нужны формочки смотреть\редактировать вот это.
И почему-то задач "Переписать алгоритмы на ilgpu" нет нигде ).
Сюрпризы ждут как раз вас, потому что имя таблицы может быть задано следующими способами:
При чем тут имя таблицы? Я работаю с классом DbContext и DbSet<> и читать еще и все атрибуты EntityFramework (помимо asp.net) мне не нужно и я не буду.
Не понимаю о каком public virtual AnotherItems идёт речь, не вижу ничего похожего в интерфейсе IEntityType
Мне не нужно сопоставлять модель БД и DbContext. Я думал это ясно из названия статьи.
Здорово, перечислите мне методы этих интерфейсов IEntityType и прочих, которые позволят получить все таблицы, поля, и атрибуты полей.
Типичным случаем, показанным в примерах Code First, является наличие DbContext с открытыми автоматическими свойствами DbSet для типов сущностей модели.
Остальные способы описания таблиц (если они есть) больше похоже на попытку OpenSource сообщества размазать данные по проекту и оставить как попало. Вот есть контекст, у него есть таблицы. Готовый удобный объект с таблицами.
В EF Core создать контекст можно полустандартным способом через IDesignTimeDbContextFactory
Зачем? Для чего? если всю информацию можно получить из типа? (без создания экземпляра). Тем более в Fody проще получить все типы из сборки, и уже работать с типами. А не искать какие-то фабрики которые вроде могут создавать экземпляры DbContext без параметров.
Всё там в модели есть.
Ничего нет, там тип, из которого нужно вытаскивать свойства, атрибуты, получать их типы, получать ссылки public virtual AnotherItems и т.д.
Кроме того, на этапе выявления А это ссылка на таблицу или что тут? (потому что virtual тяжело определить, если вообще возможно) Вас ждет очередной сюрприз.
Думал поступить на PhD вакансию (докторская, которую оплачивают).
Собрал документы, написал письма, узнал подробнее, написал CoverLetter's.
Первая вакансия предполагала тест, который я сдал на 90%. Не взяли никого, потом вакансию открыли еще раз.
Вторая вакансия - не смогли "разобрать документы об образовании". Причем пришлось писать несколько раз до deadlin-а, что там да как. И о документах об образовании никто ничего не сказал.
Даже для простого получения списка таблиц нужно создать контекст БД, подключится.
Не говоря уже об атрибутах полей данных.
На что драматически влияет глубина связей?
Не знаю, но даже у крайне примитивных инструментов вроде EasyData почему-то находятся толпы поклонников.
На объём работы же. Если вам Нравится протягивать поля руками и писать по 100 форм (а потом и отлаживать это все) в качестве тестового задания - делайте, кто Вам не дает.
Какая задача решена в данной статье?
Вот так, за час-два мы получили через рефлексию почти исчерпывающую информацию о таблицах в нашей БД, их полях, атрибутах полей, связях и всем остальном.
Установил Class Diagram - не работает. ReSharper-а нет под рукой. Да и большинство подобных публикаций и не имеет диаграмм классов. Зависимости сверху вниз слева направо. (слева направо использует\состоит из, сверху вниз - набор эквивалентных классов)
Как и CRUD на пять таблиц в виде тестового :) Поверьте "text tables with Create Update Delete labels" выглядит еще хуже
DeepSpeed (квантизация, дообучение и еще пара трюков) - Bert в 100 мегабайт (с теми же характеристиками).
Да и смысла нет, ну выучат они большие модели (потому что это крутые фирмы).
Потом откроют для себя DreamCoder :). (И, о боже, у различных действий при разговоре есть какая-то база, а BERT и прочие модели - безуспешная попытка сделать базис и чат (якобы в каком-то базисе элементарных операций)).
И это как раз уровень 4090 и пары дней. (помните, что кластеризация Word2Vec занимает минут 15, и позволяет получить контекстные синонимы довольно высокого качества - а это основа для Q&A и перехода к онтологиям (и поискам аналогий, и обогащению данными)).
И, да, никто до сих пор не прогнал нейросети из Spark через квантизацию (чтобы синтаксически разбирать гигабайты текста в минуту, строить деревья и что-то делать через coref-s).
Да ладно, мне в соседней теме пишут генератор CRUD нахой ненужон :)
Дефицита нет? )
Давайте по пунктам - CRUD есть везде.
Начиная от примитивных текстовых форумов заканчивая подписками на сервис ChatGPT - все строится на списках, элементах, связанных списках, которые хранятся в базе данных.
Ага, и логика эта - или валидация, или события (и их обработчики). Вот это поворот. Или отдельные микросервисы.
Все, добавляю IdentityServer и раздаю права. Делаю описания таблиц и прав на json. Назовите мне что я не смогу сделать :). (или значительно ускорить разработку, как и наивно полагали инженеры Microsoft, когда делали свой генератор CRUD)
Похоже в Microsoft-то дураки набитые сидят, и делают генераторы формочек :)
https://www.sumologic.com/glossary/crud/#:~:text=with Sumo Logic-,What is CRUD%3F,%2C read%2C update and delete.
Конечно, репозиторий BrainFuck-а довольно популярен. Однако даже при поддержке всякие чудеса вроде "Ой, а классы унаследованные от Control не надо регистрировать в контейнерах" - да, если это asp net, это может быть терпимо. Если у вас в Бэкенде на добрую сотню-две тысяч строк таблицы(!) можно добавлять из нескольких точек(настолько часто меняется схема данных?!) - это уже не отлаживается и не поддерживается.
Потому что найти все ссылки на вызов метода и найти 10 вариантов реализации одной и той же функциональности - это разница в 10 раз по времени.
Не говоря уже о том, что если эти практики попадут в OpenSource и будет поддержка со стороны IDE - тогда может еще терпимо. Но если это Ваш код, который не фиксирует точки функциональности - это конец проекта.
Погуглил, не нашел методов GetTables, GetLinks и подобных. И написал аж 200 строк кода :)
Да нет, мне нужны таблицы из контекста и описание моделей данных(сущности). А так же вся необходимая информация из сущностей.
Ого, лепить тысячи форм CRUD для миллионов таблиц никому не нужно? А как же 1С?
Делать CRUD без таблиц?
А я откуда знаю, это уже уровень Отображения. Скорее всего я не буду лепить какие-нибудь CompositeIndex-ы для глубины блуждания по дереву в 100 :). Придется написать немного на JavaScript. Ну и для глубины в 100500 видимо придется как-то передавать структуру индексов.
Так в заголовке все написано, я делаю свой генератор CRUD. Часть 1 - получаем данные о таблицах и их данных.
Нравится часами-днями рисовать банальные CRUD-ы - пожалуйста. Благо большинство задач из Веб-а именно из этого разряда - нам нужны формочки смотреть\редактировать вот это.
И почему-то задач "Переписать алгоритмы на ilgpu" нет нигде ).
При чем тут имя таблицы? Я работаю с классом DbContext и DbSet<> и читать еще и все атрибуты EntityFramework (помимо asp.net) мне не нужно и я не буду.
Мне не нужно сопоставлять модель БД и DbContext. Я думал это ясно из названия статьи.
Здорово, перечислите мне методы этих интерфейсов IEntityType и прочих, которые позволят получить все таблицы, поля, и атрибуты полей.
Остальные способы описания таблиц (если они есть) больше похоже на попытку OpenSource сообщества размазать данные по проекту и оставить как попало. Вот есть контекст, у него есть таблицы. Готовый удобный объект с таблицами.
Почитайте презентацию (3) ucdavis. Последние 5-6 слайдов.
Нет. Есть множество демультиплексоров, я сделал лучший (лучше чем у Пиндосов в Калифорнии).
может поправлю в 3-4 части, когда все соберу
Вы и написали про рефлексию:
Зачем? Для чего? если всю информацию можно получить из типа? (без создания экземпляра). Тем более в Fody проще получить все типы из сборки, и уже работать с типами. А не искать какие-то фабрики которые вроде могут создавать экземпляры DbContext без параметров.
Ничего нет, там тип, из которого нужно вытаскивать свойства, атрибуты, получать их типы, получать ссылки public virtual AnotherItems и т.д.
Кроме того, на этапе выявления А это ссылка на таблицу или что тут? (потому что virtual тяжело определить, если вообще возможно) Вас ждет очередной сюрприз.
Думал поступить на PhD вакансию (докторская, которую оплачивают).
Собрал документы, написал письма, узнал подробнее, написал CoverLetter's.
Первая вакансия предполагала тест, который я сдал на 90%. Не взяли никого, потом вакансию открыли еще раз.
Вторая вакансия - не смогли "разобрать документы об образовании". Причем пришлось писать несколько раз до deadlin-а, что там да как. И о документах об образовании никто ничего не сказал.
В общем, думаю что просто выбрал не тот вуз.
Выше написано - DbContext и производные не позволяют получить даже список таблиц.
И напишите как вы атрибуты asp net будете вытаскивать из DbContext без рефлексии.
Отличный интерфейс.
А где список таблиц, полей и ссылок? )
И единственный метод:
CreateDbContext(String[])
Creates a new instance of a derived context.
*В Fody искать возможные инициализации параметров конструктов DbContext для 100 и 1 случая (разные контейнеры, разные проекты) ? )
И вытаскивать из них строки подключения? )
EF вообще не подходит для этих целей. Вы собираетесь потом в Fody искать строки подключения? :D
Первые 2 ссылки с гугла:
https://stackoverflow.com/questions/3892926/entity-framework-get-list-of-tables
https://social.msdn.microsoft.com/Forums/en-US/62226de0-fa91-420d-8244-854004d5b2ea/how-to-get-all-table-names-of-db-using-ef?forum=adodotnetentityframework
Даже для простого получения списка таблиц нужно создать контекст БД, подключится.
Не говоря уже об атрибутах полей данных.
Не знаю, но даже у крайне примитивных инструментов вроде EasyData почему-то находятся толпы поклонников.
На объём работы же. Если вам Нравится протягивать поля руками и писать по 100 форм (а потом и отлаживать это все) в качестве тестового задания - делайте, кто Вам не дает.
Вот так, за час-два мы получили через рефлексию почти исчерпывающую информацию о таблицах в нашей БД, их полях, атрибутах полей, связях и всем остальном.
Установил Class Diagram - не работает. ReSharper-а нет под рукой. Да и большинство подобных публикаций и не имеет диаграмм классов. Зависимости сверху вниз слева направо. (слева направо использует\состоит из, сверху вниз - набор эквивалентных классов)
Как и CRUD на пять таблиц в виде тестового :) Поверьте "text tables with Create Update Delete labels" выглядит еще хуже
Поправил
и Vice Versa :)
Увы, большинство задач в исследованиях и разработке электроники:
написать прототип на verilog
провести синтез, оценить результат
Если результат устроил:
сделать генератор с параметрами (на python или любом другом языке), который пишет это на verilog.
В сравнении с самыми быстрыми селекторами я получил на 20% меньшую площадь.
Да, это немного уровень PhD :)
Лучше бы про катализ и последние достижения физической химии и катализа написали )
Это поинтересней и ближе к образу Наномашин )
Актуально ли это?
С DreamCoder-ом я могу разрабатывать белковые прототипы чуть ли не по текстовому описанию.
С Alpha Fold я могу быстро генерировать прототипы, и проверять их сборку при различных примесях в Nvidia Microbes или любом другом симуляторе.
И тут - Наномашины, ура. И что? )
Звездные войны? )
DeepSpeed (квантизация, дообучение и еще пара трюков) - Bert в 100 мегабайт (с теми же характеристиками).
Да и смысла нет, ну выучат они большие модели (потому что это крутые фирмы).
Потом откроют для себя DreamCoder :). (И, о боже, у различных действий при разговоре есть какая-то база, а BERT и прочие модели - безуспешная попытка сделать базис и чат (якобы в каком-то базисе элементарных операций)).
И это как раз уровень 4090 и пары дней. (помните, что кластеризация Word2Vec занимает минут 15, и позволяет получить контекстные синонимы довольно высокого качества - а это основа для Q&A и перехода к онтологиям (и поискам аналогий, и обогащению данными)).
И, да, никто до сих пор не прогнал нейросети из Spark через квантизацию (чтобы синтаксически разбирать гигабайты текста в минуту, строить деревья и что-то делать через coref-s).