|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Вот Fluent API же нормально сделан - всё типизировано, заделегатено, залямбдено. А миграции как будто из 90-х годов. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2015, 12:46 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Alexey2112Мдааа... А изкоробочные миграции-то не парятся по поводу захардкоденных строк и не юзают рефлексию, выражения и прочие лишние извращения. И вообще, CF как будто заточен на захардкоденные строки. Чтобы всё было по-моему, там надо всё переписать - соглашения, атрибуты, миграции и ещё много страшных слов - всё руками своими переделать... Да ну его на. У меня тоже будут захардкоденные строки. ))) Не понял в чём проблема. В строках? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2015, 16:35 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Alexey2112Вот Fluent API же нормально сделан - всё типизировано, заделегатено, залямбдено. А миграции как будто из 90-х годов. Ну так в этом и прелесть, выбирай, что тебе лично удобно. Удобен флюент? Флаг в руки )) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2015, 16:36 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
hVosttAlexey2112Вот Fluent API же нормально сделан - всё типизировано, заделегатено, залямбдено. А миграции как будто из 90-х годов. Ну так в этом и прелесть, выбирай, что тебе лично удобно. Удобен флюент? Флаг в руки )) Флюент многословен. Несколько символов атрибута в модели против нескольких строк во флюэнте. Со флюэнтом количество текста, который надо напечатать, увеличивается раз так в пять-десять. Нет, я не хочу флюэнт. Я хочу типизированный выбор с помощью IntelliSence в миграциях. Например, сейчас так Код: c# 1. 2. 3. 4.
А хочу типа такого Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2015, 17:17 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
И да, я не хочу ничего самому писать - переписывать половину EF CF. Почему они сразу не написали всё через рефлексию и выражения с лямбдами, а сделали тупой и топорный АПИ через строки, как в 90-х или какой-нибудь Джаве, прости господи? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2015, 17:18 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Alexey2112А хочу типа такого Код: c# 1. 2. 3. 4.
Если ты хотя бы на минуточку включишь то место, которое называется мозгом у эволюционировавших приматов, то поймёшь, что это невозможно. Просьба не обижаться. Но это так же тупо, как ставить под сомнение наличие как минимум 3-х ножек у табуретки, такое желание, как ты выразил похоже на желания отпилить у табуретки злосчастные 2 ноги, ведь по идее и одной должно быть достаточно. Тебе помочь, разобраться, почему тут нельзя использовать типизированные лямбда-выражения? Ни при каких обстоятельствах. Ни. При. Каких. ВОобще. Никак. Это невозможно. Хоть призови весь Гугл, Фейсбук и Эппл на помощь. Призови Шойгу и древних индийских шаманов с галюциногенными грибами. Нельзя. Помочь разобраться, ну почему же строки, а не рефлексия? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2015, 17:23 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Alexey2112И да, я не хочу ничего самому писать - переписывать половину EF CF. Почему они сразу не написали всё через рефлексию и выражения с лямбдами, а сделали тупой и топорный АПИ через строки, как в 90-х или какой-нибудь Джаве, прости господи? Скоро дойдёт ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2015, 17:30 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
hVosttПомочь разобраться, ну почему же строки, а не рефлексия? давай ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2015, 17:48 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
hVosttТебе помочь, разобраться, почему тут нельзя использовать типизированные лямбда-выражения? Ни при каких обстоятельствах. Ни. При. Каких. ВОобще. Никак. Это невозможно. Хоть призови весь Гугл, Фейсбук и Эппл на помощь. Призови Шойгу и древних индийских шаманов с галюциногенными грибами. Гм, как сказать... Я призову трёх польских студентов и их язык Nemerle. Ну или любой язык с развитым метапрограммированием. Макрос может на этапе компиляции слазить в БД и проверить соответствие типов. (Конечно, в рантайме код всё равно может упасть, если схема БД окажется другая). Пусть не совсем то, но близко. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2015, 18:35 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
petalvikhVosttТебе помочь, разобраться, почему тут нельзя использовать типизированные лямбда-выражения? Ни при каких обстоятельствах. Ни. При. Каких. ВОобще. Никак. Это невозможно. Хоть призови весь Гугл, Фейсбук и Эппл на помощь. Призови Шойгу и древних индийских шаманов с галюциногенными грибами. Гм, как сказать... Я призову трёх польских студентов и их язык Nemerle. Ну или любой язык с развитым метапрограммированием. Макрос может на этапе компиляции слазить в БД и проверить соответствие типов. (Конечно, в рантайме код всё равно может упасть, если схема БД окажется другая). Пусть не совсем то, но близко. Какие лазания в БД в CF? У нас код главнее. У нас БД - это модель на сишарпе. Куда и зачем лазать? Что, нельзя по классам полазать и дать возможность их свойства указывать не строками, а лямбдами? Всё, ребята, приплыли. Щас другие времена настают. Кончились времена исчадий ада - этих ваших DBA, которые, дай им волю, вообще бы все приложения прямо в СУБД и писали на своих чёртовых хранимках. Щас СУБД - робкая обслуга сишарпобояр. Кто там лезет своими грязными похотливыми ручонками в мою БД через свою сраную админку? - Убью нафиг! Теперь только через код и только для благородных донов-программеров. hVosttПомочь разобраться, ну почему же строки, а не рефлексия? Да. Я чёта не вдупляю в упор. И чего ты смайлов понаставил? Какой-то подвох? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2015, 19:51 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
ViPRoshVosttПомочь разобраться, ну почему же строки, а не рефлексия? давай Похоже тут у многих проблемы Вопрос на засыпку. Я удаляю сущность, которая в EF мапилась на таблицу. В миграции должна быть прописана инструкция для удаления таблицы. И, конечно, роллбэк для восстановления, при откате миграции. Чё я там должен увидеть с рефлексией? Вопрос второй на засыпку. Я удаляю из сущности свойство, которое в EF мапилось на колонку таблицы. В миграции должна быть прописана инструкция на удаление колонки таблицы, ну и роллбэк. Чё я там должен увидеть с рефлексией? Куда моя лямбда должна указывать? На мифическую куйню из воспалённого больного воображения? В общем, я не ожидал, что всё так плохо... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2015, 19:54 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
petalvikГм, как сказать... Я призову трёх польских студентов и их язык Nemerle. Ну или любой язык с развитым метапрограммированием. Макрос может на этапе компиляции слазить в БД и проверить соответствие типов. (Конечно, в рантайме код всё равно может упасть, если схема БД окажется другая). Пусть не совсем то, но близко. Речь идёт о C#, да и в C# кодогенерацию никто не отменял. Майкрософт этим балуется со времён первых вижуал студий. Но всё равно я не понял, чем тут поможет Nemerle. У меня должен храниться код всех миграций, в разные моменты времени я должен ссылаться на то, чего ещё не существует, или то, чего уже не существует. Каким боком мне тут макросы упадут, я так и не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2015, 19:57 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Alexey2112Что, нельзя по классам полазать и дать возможность их свойства указывать не строками, а лямбдами? Ты мыслишь удивительно плоско Почитай мои комменты выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2015, 19:58 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
hVosttViPRosпропущено... давай Похоже тут у многих проблемы Вопрос на засыпку. Я удаляю сущность, которая в EF мапилась на таблицу. В миграции должна быть прописана инструкция для удаления таблицы. И, конечно, роллбэк для восстановления, при откате миграции. Чё я там должен увидеть с рефлексией? Вопрос второй на засыпку. Я удаляю из сущности свойство, которое в EF мапилось на колонку таблицы. В миграции должна быть прописана инструкция на удаление колонки таблицы, ну и роллбэк. Чё я там должен увидеть с рефлексией? Куда моя лямбда должна указывать? На мифическую куйню из воспалённого больного воображения? В общем, я не ожидал, что всё так плохо... да мне пофиг твои "миграции" и ЕФ но ты у себя в программной модели (СФ) удаляешь "сущности и свойства", а не в БД (надеюсь БД не создана для твоей игрушки, а пользуются этой БД разные программы и т.д.), потому как тут уже сказал мальчик новый - даешь лямбды и рефлексию!!! твоя модель СФ - это проекция реальной БД, потому сама идея каких то миграций - ущербность полная ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 01:08 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
hVosttУ меня должен храниться код всех миграций, в разные моменты времени я должен ссылаться на то, чего ещё не существует, или то, чего уже не существует. Ты прав... Но ты же понимаешь, что я не могу этого вот так просто признать. Я должен обязательно что-то сказать против, обозвать, в конце концов в МСУ-стайле, ещё что-нибудь. Да и традиции требуют сопротивляться до последнего, до полного маразма. Сейчас, что-нибудь придумаю... А, вот - какого хрена вся история сущностей не хранится в строго типизированном виде? Ну, типа системы контроля версий - все когда-либо созданные сущности хранятся в ней, но мапятся только актуальные. Но при этом сохраняется возмодность указать даже лямбдами на то, что уже не существует в БД, но по-прежнему есть в коде. Насчёт "чего ещё не существует". Так миграции по добавлению новой сущности или свойство уже существующей сущности пищутся после такого добавления. Т. е. рефлексией или выражением по этому уже можно пройтись и лямбдой это дело указать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 01:29 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
ViPRosно ты у себя в программной модели (СФ) удаляешь "сущности и свойства", а не в БД я удаляю сущности и свойства, это равнозначно удалению таблиц и колонок из БД. чего тут непонятного? с чего ты вообще взял, что БД пользуются разные программы? а если даже и так, то с чего ты взял, что разные программы цепляются к одной БД напрямую? кто тебя архитектуру делать учил? по руками за такое безобразие ещё не били? повезло. ViPRosпотому как тут уже сказал мальчик новый - даешь лямбды и рефлексию!!! не даёшь, я уже объяснил почему. практически на пальцах. ViPRosтвоя модель СФ - это проекция реальной БД, потому сама идея каких то миграций - ущербность полная ты забыл привести доводы. т.е. я глотнул чайку, потому миграции EF -- просто гениальная идея! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 08:34 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Alexey2112Но при этом сохраняется возмодность указать даже лямбдами на то, что уже не существует в БД, но по-прежнему есть в коде. Смысл? Типизация нужна там, где есть риск совершить ошибку, т.е. в процессе реализации алгоритмов, бизнес-логики, во время прикладной разработки. Миграции не программируются, они по большей части генерируются, это просто перманентно сериализуемый прямой набор инструкций, без условий, циклов и мета-процедурно-ориентированных финтов ушами. Для чего там типизация я ни панимать. Alexey2112Насчёт "чего ещё не существует". Так миграции по добавлению новой сущности или свойство уже существующей сущности пищутся после такого добавления. Т. е. рефлексией или выражением по этому уже можно пройтись и лямбдой это дело указать. Ты оперируешь настоящим временем. А теперь представь тысячу миграций и любой выбранный момент времени, для которого существуют прошлое и будущее в контексте миграций. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 08:41 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
hVosttМиграции не программируются, они по большей части генерируются Что-то в этом есть... Но править их руками-то позволено всё равно. Ну и плюс, как тут говорили, генерируются только элементарные меграции, а посложнее - уже ручками. Тут-то рефакторинг и прочий треш и всплывают. Вот накопилась у тебя сотня миграций, а потом ты решил поменять название свойства, таблицы, ещё что-то. А у тебя всё захардкодено строками. Полнотекстовый поиск и замена - чреват ошибками из-за ложного срабатывания (где-то названия могут отличаться только суффиксами или префиксами). Т. е. никакой автозамены по всем файлам - только по одной замене за раз - не сильно производительнее, чем вручную искать и заменять. Делать сложные регулярки для таких вещей? - Чёта я взоржал с таких технологий в век рефакторинга на основе строго типизированного анализа кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 13:12 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Alexey2112Потому что у меня есть другое свойство в другой модели [Required] public string Name { get; set; } автосгенеренная миграция для неё получилась такая Name = c.String(nullable: false), а в БД это выглядит так Name nvarchar(MAX) allow nulls:нет галочки Не, тут всё же какая-то другая инопланетная логика. Я НЕ использовал атрибут Required, а миграция всё равно сделалась с nullable:false. Что за фигня вообще тут творится с этим CF?! Вот модель Код: c# 1. 2. 3. 4.
вот миграция Код: c# 1. 2.
Всё же, там, похоже, и на основе Required, и на основе самого типа свойства основывается - nullable оно или нет. Т. е. атрибутом Required можно сделать не nullable всякие по природе nullable-типы (типа ссылочных типов). А для всяких чисел, которые по определению не nullable, можно сделать nullable с помощью типа Nullable<T> (int?, double? и т. д.). Вот теперь правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 13:33 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Кстати, а кто как миграции содержит? Ну будет у вас сотня миграций - а как вы их назовёте? Я пока так делаю 201506170934203_TestTable_AddCommentaryProperty Это нормально, или есть способ лучше? А то чувствую, что папка Migrations скоро будет состоять из гиганстского списка миграций, которые упорядочены по времени и только. Или штука в том, что миграций В ПРИНЦИПЕ не должно быть сильно много, поэтому вроде как предполагается, что и проблем по управлению миграциями и их хранению и упорядочиванию не должно возникать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 13:42 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Alexey2112Всё же, там, похоже, и на основе Required, и на основе самого типа свойства основывается - nullable оно или нет. Т. е. атрибутом Required можно сделать не nullable всякие по природе nullable-типы (типа ссылочных типов). А для всяких чисел, которые по определению не nullable, можно сделать nullable с помощью типа Nullable<T> (int?, double? и т. д.). Вот теперь правильно? Да, всё верно. Alexey2112Кстати, а кто как миграции содержит? Ну будет у вас сотня миграций - а как вы их назовёте? В разных проектах по-разному, где-то уже устоявшаяся система есть, где-то свободная. Ну а мне лично нравится версия X_YY (или X_YY_ZZ для патчей) и всё привязано к версии, которая хорошо описана, например, в вики и содержит все тикеты, а также коммиты в рамках работы над версией/патчем. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 14:41 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
hVosttViPRosно ты у себя в программной модели (СФ) удаляешь "сущности и свойства", а не в БД я удаляю сущности и свойства, это равнозначно удалению таблиц и колонок из БД. чего тут непонятного? с чего ты вообще взял, что БД пользуются разные программы? а если даже и так, то с чего ты взял, что разные программы цепляются к одной БД напрямую? кто тебя архитектуру делать учил? по руками за такое безобразие ещё не били? повезло. ViPRosпотому как тут уже сказал мальчик новый - даешь лямбды и рефлексию!!! не даёшь, я уже объяснил почему. практически на пальцах. ViPRosтвоя модель СФ - это проекция реальной БД, потому сама идея каких то миграций - ущербность полная ты забыл привести доводы. т.е. я глотнул чайку, потому миграции EF -- просто гениальная идея! блин, одно и то же поле для какой то цели (взгляда на систему, клиента) существует, а для других нет как может какая та прога удалить это поле? (если конечно эта прога не есть "админка" СУБД) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 16:02 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
ViPRosблин, одно и то же поле для какой то цели (взгляда на систему, клиента) существует, а для других нет как может какая та прога удалить это поле? (если конечно эта прога не есть "админка" СУБД) то, про что ты говоришь, называется простым и ёмким словом бардак . это не прога, а слой БЛ. прога может либо юзать БЛ, либо обращаться к данным через единый REST/API. даже если я напьюсь до чёртиков, мне не придёт в голову раздавать прямой доступ к БД направо и налево. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 18:23 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
hVosttViPRosблин, одно и то же поле для какой то цели (взгляда на систему, клиента) существует, а для других нет как может какая та прога удалить это поле? (если конечно эта прога не есть "админка" СУБД) то, про что ты говоришь, называется простым и ёмким словом бардак . это не прога, а слой БЛ. прога может либо юзать БЛ, либо обращаться к данным через единый REST/API. даже если я напьюсь до чёртиков, мне не придёт в голову раздавать прямой доступ к БД направо и налево. ты просто офигевший мальчик, какие то слои доступа и т.д. - ахинею не неси, кроме твоих игрушек есть и нормальные системы, которые с СУБД работают через АПИ СУБД, а не через твой огрызок для доступа к БД это надо ж блин зомбироваться до такой степени ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 18:36 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
ViPRosты просто офигевший мальчик, какие то слои доступа и т.д. - ахинею не неси, кроме твоих игрушек есть и нормальные системы, которые с СУБД работают через АПИ СУБД, а не через твой огрызок для доступа к БД унылого бардака в стране хватает. как и ребят, со своей унылой радостью ежедневно большой лопатой разгребать гумно лопатой. это факт. какой ещё нафиг "огрызок"? чё ты несёшь? обкурился чтоле? я даю доступ к данным, именно к тем, которые нужны клиенту, именно в том виде, как они нужны клиенту. и клиент доволен как слон. учитывая, что уже давно есть такие вещи как OData, можно АПИ СУБД своё затолкать в гудок. ViPRosэто надо ж блин зомбироваться до такой степени угу, ты ещё расскажи нам, что лошади -- это лучшее в мире средство передвижение, а самолёты-авто-жд для полных даунов и лохов. эх, зомбированное человечество. лошади и кареты! короче, глупочтей не гавари, да ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 19:54 |
|
|
start [/forum/topic.php?fid=17&startmsg=38984658&tid=1349537]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
141ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 239ms |
total: | 489ms |
0 / 0 |