Pull to refresh
-22
-0.3
Send message

Да ладно, мне в соседней теме пишут генератор CRUD нахой ненужон :)

Дефицита нет? )

Какая практическая ценность-то? :)

Давайте по пунктам - CRUD есть везде.

Начиная от примитивных текстовых форумов заканчивая подписками на сервис ChatGPT - все строится на списках, элементах, связанных списках, которые хранятся в базе данных.

Формочки сами по себе никому не нужны, за ними большой слой логики.

Ага, и логика эта - или валидация, или события (и их обработчики). Вот это поворот. Или отдельные микросервисы.

Ну давайте копнём глубже. Вы накидали за 2 часа условно супер-универсальный CRUD. Подойдём основательно и выделим больше времени. Допустим 2 недели. Сделали CRUD, теперь можно редактировать любые таблички, вносить данные. Что дальше? :) Можно разогнать табун разработчиков. Теперь можно вводить любые данные. Программа готова на века :)

Все, добавляю 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.

Если вам удобен всего 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 сообщества размазать данные по проекту и оставить как попало. Вот есть контекст, у него есть таблицы. Готовый удобный объект с таблицами.

Но не в этом ли смысл декодера?

Почитайте презентацию (3) ucdavis. Последние 5-6 слайдов.

PS: кажется я понял, о чём текст. О ветвлении того самого сигнала DATA на схеме "типичного демультиплексора"?

Нет. Есть множество демультиплексоров, я сделал лучший (лучше чем у Пиндосов в Калифорнии).

может поправлю в 3-4 части, когда все соберу

Вы и написали про рефлексию:

В EF Core создать контекст можно полустандартным способом через IDesignTimeDbContextFactory

Зачем? Для чего? если всю информацию можно получить из типа? (без создания экземпляра). Тем более в Fody проще получить все типы из сборки, и уже работать с типами. А не искать какие-то фабрики которые вроде могут создавать экземпляры DbContext без параметров.

Всё там в модели есть.

Ничего нет, там тип, из которого нужно вытаскивать свойства, атрибуты, получать их типы, получать ссылки public virtual AnotherItems и т.д.

Кроме того, на этапе выявления А это ссылка на таблицу или что тут? (потому что virtual тяжело определить, если вообще возможно) Вас ждет очередной сюрприз.

Думал поступить на PhD вакансию (докторская, которую оплачивают).

Собрал документы, написал письма, узнал подробнее, написал CoverLetter's.

Первая вакансия предполагала тест, который я сдал на 90%. Не взяли никого, потом вакансию открыли еще раз.

Вторая вакансия - не смогли "разобрать документы об образовании". Причем пришлось писать несколько раз до deadlin-а, что там да как. И о документах об образовании никто ничего не сказал.

В общем, думаю что просто выбрал не тот вуз.

Выше написано - DbContext и производные не позволяют получить даже список таблиц.

И напишите как вы атрибуты asp net будете вытаскивать из DbContext без рефлексии.

В EF Core создать контекст можно полустандартным способом через IDesignTimeDbContextFactory

Отличный интерфейс.

А где список таблиц, полей и ссылок? )

И единственный метод:

CreateDbContext(String[])

Creates a new instance of a derived context.

*В Fody искать возможные инициализации параметров конструктов DbContext для 100 и 1 случая (разные контейнеры, разные проекты) ? )

И вытаскивать из них строки подключения? )

Для чего рефлексия? Почему не подошёл EF?

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" выглядит еще хуже

  • Поправил

Увы, большинство задач в исследованиях и разработке электроники:

  1. написать прототип на verilog

  2. провести синтез, оценить результат

    Если результат устроил:

  3. сделать генератор с параметрами (на python или любом другом языке), который пишет это на verilog.

В сравнении с самыми быстрыми селекторами я получил на 20% меньшую площадь.

Да, это немного уровень PhD :)

Лучше бы про катализ и последние достижения физической химии и катализа написали )

Это поинтересней и ближе к образу Наномашин )

Актуально ли это?

С DreamCoder-ом я могу разрабатывать белковые прототипы чуть ли не по текстовому описанию.

С Alpha Fold я могу быстро генерировать прототипы, и проверять их сборку при различных примесях в Nvidia Microbes или любом другом симуляторе.

И тут - Наномашины, ура. И что? )

DeepSpeed (квантизация, дообучение и еще пара трюков) - Bert в 100 мегабайт (с теми же характеристиками).

Да и смысла нет, ну выучат они большие модели (потому что это крутые фирмы).

Потом откроют для себя DreamCoder :). (И, о боже, у различных действий при разговоре есть какая-то база, а BERT и прочие модели - безуспешная попытка сделать базис и чат (якобы в каком-то базисе элементарных операций)).

И это как раз уровень 4090 и пары дней. (помните, что кластеризация Word2Vec занимает минут 15, и позволяет получить контекстные синонимы довольно высокого качества - а это основа для Q&A и перехода к онтологиям (и поискам аналогий, и обогащению данными)).

И, да, никто до сих пор не прогнал нейросети из Spark через квантизацию (чтобы синтаксически разбирать гигабайты текста в минуту, строить деревья и что-то делать через coref-s).

Information

Rating
Does not participate
Registered
Activity

Specialization

Десктоп разработчик, Бэкенд разработчик
Старший
From 220,000 ₽
SQL
Python
C#
ASP.NET MVC
Windows Forms
.NET
WPF
WCF
RabbitMQ