powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Покритикуйте EF code-first
25 сообщений из 245, страница 9 из 10
Покритикуйте EF code-first
    #38984658
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот Fluent API же нормально сделан - всё типизировано, заделегатено, залямбдено. А миграции как будто из 90-х годов.
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985006
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112Мдааа... А изкоробочные миграции-то не парятся по поводу захардкоденных строк и не юзают рефлексию, выражения и прочие лишние извращения. И вообще, CF как будто заточен на захардкоденные строки. Чтобы всё было по-моему, там надо всё переписать - соглашения, атрибуты, миграции и ещё много страшных слов - всё руками своими переделать... Да ну его на. У меня тоже будут захардкоденные строки. )))

Не понял в чём проблема. В строках?
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985008
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112Вот Fluent API же нормально сделан - всё типизировано, заделегатено, залямбдено. А миграции как будто из 90-х годов.

Ну так в этом и прелесть, выбирай, что тебе лично удобно. Удобен флюент? Флаг в руки ))
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985059
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAlexey2112Вот Fluent API же нормально сделан - всё типизировано, заделегатено, залямбдено. А миграции как будто из 90-х годов.

Ну так в этом и прелесть, выбирай, что тебе лично удобно. Удобен флюент? Флаг в руки ))
Флюент многословен. Несколько символов атрибута в модели против нескольких строк во флюэнте. Со флюэнтом количество текста, который надо напечатать, увеличивается раз так в пять-десять.

Нет, я не хочу флюэнт. Я хочу типизированный выбор с помощью IntelliSence в миграциях. Например, сейчас так

Код: c#
1.
2.
3.
4.
        public override void Down()
        {            
            DropForeignKey("dbo.InputData", "TestId", "dbo.Test");
        }



А хочу типа такого

Код: c#
1.
2.
3.
4.
        public override void Down()
        {            
            DropForeignKey(schema -> schema.InputData, model -> model.Test.TestId, schema -> schema.Test);
        }
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985063
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И да, я не хочу ничего самому писать - переписывать половину EF CF. Почему они сразу не написали всё через рефлексию и выражения с лямбдами, а сделали тупой и топорный АПИ через строки, как в 90-х или какой-нибудь Джаве, прости господи?
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985069
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112А хочу типа такого

Код: c#
1.
2.
3.
4.
        public override void Down()
        {            
            DropForeignKey(schema -> schema.InputData, model -> model.Test.TestId, schema -> schema.Test);
        }




Если ты хотя бы на минуточку включишь то место, которое называется мозгом у эволюционировавших приматов, то поймёшь, что это невозможно.

Просьба не обижаться. Но это так же тупо, как ставить под сомнение наличие как минимум 3-х ножек у табуретки, такое желание, как ты выразил похоже на желания отпилить у табуретки злосчастные 2 ноги, ведь по идее и одной должно быть достаточно.

Тебе помочь, разобраться, почему тут нельзя использовать типизированные лямбда-выражения? Ни при каких обстоятельствах.

Ни. При. Каких. ВОобще. Никак. Это невозможно. Хоть призови весь Гугл, Фейсбук и Эппл на помощь. Призови Шойгу и древних индийских шаманов с галюциногенными грибами.

Нельзя.

Помочь разобраться, ну почему же строки, а не рефлексия?
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985077
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112И да, я не хочу ничего самому писать - переписывать половину EF CF. Почему они сразу не написали всё через рефлексию и выражения с лямбдами, а сделали тупой и топорный АПИ через строки, как в 90-х или какой-нибудь Джаве, прости господи?



Скоро дойдёт
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985100
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПомочь разобраться, ну почему же строки, а не рефлексия?
давай
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985158
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТебе помочь, разобраться, почему тут нельзя использовать типизированные лямбда-выражения? Ни при каких обстоятельствах.

Ни. При. Каких. ВОобще. Никак. Это невозможно. Хоть призови весь Гугл, Фейсбук и Эппл на помощь. Призови Шойгу и древних индийских шаманов с галюциногенными грибами.
Гм, как сказать... Я призову трёх польских студентов и их язык Nemerle. Ну или любой язык с развитым метапрограммированием.
Макрос может на этапе компиляции слазить в БД и проверить соответствие типов. (Конечно, в рантайме код всё равно может упасть, если схема БД окажется другая). Пусть не совсем то, но близко.
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985223
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikhVosttТебе помочь, разобраться, почему тут нельзя использовать типизированные лямбда-выражения? Ни при каких обстоятельствах.

Ни. При. Каких. ВОобще. Никак. Это невозможно. Хоть призови весь Гугл, Фейсбук и Эппл на помощь. Призови Шойгу и древних индийских шаманов с галюциногенными грибами.
Гм, как сказать... Я призову трёх польских студентов и их язык Nemerle. Ну или любой язык с развитым метапрограммированием.
Макрос может на этапе компиляции слазить в БД и проверить соответствие типов. (Конечно, в рантайме код всё равно может упасть, если схема БД окажется другая). Пусть не совсем то, но близко.
Какие лазания в БД в CF? У нас код главнее. У нас БД - это модель на сишарпе. Куда и зачем лазать? Что, нельзя по классам полазать и дать возможность их свойства указывать не строками, а лямбдами?

Всё, ребята, приплыли. Щас другие времена настают. Кончились времена исчадий ада - этих ваших DBA, которые, дай им волю, вообще бы все приложения прямо в СУБД и писали на своих чёртовых хранимках. Щас СУБД - робкая обслуга сишарпобояр. Кто там лезет своими грязными похотливыми ручонками в мою БД через свою сраную админку? - Убью нафиг! Теперь только через код и только для благородных донов-программеров.

hVosttПомочь разобраться, ну почему же строки, а не рефлексия?
Да. Я чёта не вдупляю в упор.

И чего ты смайлов понаставил? Какой-то подвох?
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985224
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVosttПомочь разобраться, ну почему же строки, а не рефлексия?
давай

Похоже тут у многих проблемы

Вопрос на засыпку. Я удаляю сущность, которая в EF мапилась на таблицу. В миграции должна быть прописана инструкция для удаления таблицы. И, конечно, роллбэк для восстановления, при откате миграции. Чё я там должен увидеть с рефлексией?

Вопрос второй на засыпку. Я удаляю из сущности свойство, которое в EF мапилось на колонку таблицы. В миграции должна быть прописана инструкция на удаление колонки таблицы, ну и роллбэк. Чё я там должен увидеть с рефлексией? Куда моя лямбда должна указывать? На мифическую куйню из воспалённого больного воображения?

В общем, я не ожидал, что всё так плохо...
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985226
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikГм, как сказать... Я призову трёх польских студентов и их язык Nemerle. Ну или любой язык с развитым метапрограммированием.
Макрос может на этапе компиляции слазить в БД и проверить соответствие типов. (Конечно, в рантайме код всё равно может упасть, если схема БД окажется другая). Пусть не совсем то, но близко.

Речь идёт о C#, да и в C# кодогенерацию никто не отменял. Майкрософт этим балуется со времён первых вижуал студий.

Но всё равно я не понял, чем тут поможет Nemerle. У меня должен храниться код всех миграций, в разные моменты времени я должен ссылаться на то, чего ещё не существует, или то, чего уже не существует. Каким боком мне тут макросы упадут, я так и не понял.
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985227
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112Что, нельзя по классам полазать и дать возможность их свойства указывать не строками, а лямбдами?

Ты мыслишь удивительно плоско Почитай мои комменты выше.
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985308
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRosпропущено...

давай

Похоже тут у многих проблемы

Вопрос на засыпку. Я удаляю сущность, которая в EF мапилась на таблицу. В миграции должна быть прописана инструкция для удаления таблицы. И, конечно, роллбэк для восстановления, при откате миграции. Чё я там должен увидеть с рефлексией?

Вопрос второй на засыпку. Я удаляю из сущности свойство, которое в EF мапилось на колонку таблицы. В миграции должна быть прописана инструкция на удаление колонки таблицы, ну и роллбэк. Чё я там должен увидеть с рефлексией? Куда моя лямбда должна указывать? На мифическую куйню из воспалённого больного воображения?

В общем, я не ожидал, что всё так плохо...
да мне пофиг твои "миграции" и ЕФ
но ты у себя в программной модели (СФ) удаляешь "сущности и свойства", а не в БД (надеюсь БД не создана для твоей игрушки, а пользуются этой БД разные программы и т.д.), потому как тут уже сказал мальчик новый - даешь лямбды и рефлексию!!!
твоя модель СФ - это проекция реальной БД, потому сама идея каких то миграций - ущербность полная
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985311
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttУ меня должен храниться код всех миграций, в разные моменты времени я должен ссылаться на то, чего ещё не существует, или то, чего уже не существует.
Ты прав... Но ты же понимаешь, что я не могу этого вот так просто признать. Я должен обязательно что-то сказать против, обозвать, в конце концов в МСУ-стайле, ещё что-нибудь. Да и традиции требуют сопротивляться до последнего, до полного маразма. Сейчас, что-нибудь придумаю... А, вот - какого хрена вся история сущностей не хранится в строго типизированном виде? Ну, типа системы контроля версий - все когда-либо созданные сущности хранятся в ней, но мапятся только актуальные. Но при этом сохраняется возмодность указать даже лямбдами на то, что уже не существует в БД, но по-прежнему есть в коде.

Насчёт "чего ещё не существует". Так миграции по добавлению новой сущности или свойство уже существующей сущности пищутся после такого добавления. Т. е. рефлексией или выражением по этому уже можно пройтись и лямбдой это дело указать.
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985376
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosно ты у себя в программной модели (СФ) удаляешь "сущности и свойства", а не в БД

я удаляю сущности и свойства, это равнозначно удалению таблиц и колонок из БД. чего тут непонятного? с чего ты вообще взял, что БД пользуются разные программы? а если даже и так, то с чего ты взял, что разные программы цепляются к одной БД напрямую? кто тебя архитектуру делать учил? по руками за такое безобразие ещё не били? повезло.

ViPRosпотому как тут уже сказал мальчик новый - даешь лямбды и рефлексию!!!

не даёшь, я уже объяснил почему. практически на пальцах.

ViPRosтвоя модель СФ - это проекция реальной БД, потому сама идея каких то миграций - ущербность полная

ты забыл привести доводы.

т.е.

я глотнул чайку, потому миграции EF -- просто гениальная идея!
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985381
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112Но при этом сохраняется возмодность указать даже лямбдами на то, что уже не существует в БД, но по-прежнему есть в коде.

Смысл? Типизация нужна там, где есть риск совершить ошибку, т.е. в процессе реализации алгоритмов, бизнес-логики, во время прикладной разработки.

Миграции не программируются, они по большей части генерируются, это просто перманентно сериализуемый прямой набор инструкций, без условий, циклов и мета-процедурно-ориентированных финтов ушами. Для чего там типизация я ни панимать.

Alexey2112Насчёт "чего ещё не существует". Так миграции по добавлению новой сущности или свойство уже существующей сущности пищутся после такого добавления. Т. е. рефлексией или выражением по этому уже можно пройтись и лямбдой это дело указать.

Ты оперируешь настоящим временем. А теперь представь тысячу миграций и любой выбранный момент времени, для которого существуют прошлое и будущее в контексте миграций.
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985754
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМиграции не программируются, они по большей части генерируются

Что-то в этом есть... Но править их руками-то позволено всё равно. Ну и плюс, как тут говорили, генерируются только элементарные меграции, а посложнее - уже ручками. Тут-то рефакторинг и прочий треш и всплывают. Вот накопилась у тебя сотня миграций, а потом ты решил поменять название свойства, таблицы, ещё что-то. А у тебя всё захардкодено строками. Полнотекстовый поиск и замена - чреват ошибками из-за ложного срабатывания (где-то названия могут отличаться только суффиксами или префиксами). Т. е. никакой автозамены по всем файлам - только по одной замене за раз - не сильно производительнее, чем вручную искать и заменять. Делать сложные регулярки для таких вещей? - Чёта я взоржал с таких технологий в век рефакторинга на основе строго типизированного анализа кода.
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985785
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
        [Required]
        public string Name { get; set; }

        public double Value { get; set; }



вот миграция

Код: c#
1.
2.
                        Name = c.String(nullable: false),
                        Value = c.Double(nullable: false),



Всё же, там, похоже, и на основе Required, и на основе самого типа свойства основывается - nullable оно или нет. Т. е. атрибутом Required можно сделать не nullable всякие по природе nullable-типы (типа ссылочных типов). А для всяких чисел, которые по определению не nullable, можно сделать nullable с помощью типа Nullable<T> (int?, double? и т. д.). Вот теперь правильно?
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985793
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а кто как миграции содержит? Ну будет у вас сотня миграций - а как вы их назовёте? Я пока так делаю

201506170934203_TestTable_AddCommentaryProperty

Это нормально, или есть способ лучше? А то чувствую, что папка Migrations скоро будет состоять из гиганстского списка миграций, которые упорядочены по времени и только.

Или штука в том, что миграций В ПРИНЦИПЕ не должно быть сильно много, поэтому вроде как предполагается, что и проблем по управлению миграциями и их хранению и упорядочиванию не должно возникать?
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985855
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112Всё же, там, похоже, и на основе Required, и на основе самого типа свойства основывается - nullable оно или нет. Т. е. атрибутом Required можно сделать не nullable всякие по природе nullable-типы (типа ссылочных типов). А для всяких чисел, которые по определению не nullable, можно сделать nullable с помощью типа Nullable<T> (int?, double? и т. д.). Вот теперь правильно?

Да, всё верно.

Alexey2112Кстати, а кто как миграции содержит? Ну будет у вас сотня миграций - а как вы их назовёте?

В разных проектах по-разному, где-то уже устоявшаяся система есть, где-то свободная. Ну а мне лично нравится версия X_YY (или X_YY_ZZ для патчей) и всё привязано к версии, которая хорошо описана, например, в вики и содержит все тикеты, а также коммиты в рамках работы над версией/патчем.
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38985960
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRosно ты у себя в программной модели (СФ) удаляешь "сущности и свойства", а не в БД

я удаляю сущности и свойства, это равнозначно удалению таблиц и колонок из БД. чего тут непонятного? с чего ты вообще взял, что БД пользуются разные программы? а если даже и так, то с чего ты взял, что разные программы цепляются к одной БД напрямую? кто тебя архитектуру делать учил? по руками за такое безобразие ещё не били? повезло.

ViPRosпотому как тут уже сказал мальчик новый - даешь лямбды и рефлексию!!!

не даёшь, я уже объяснил почему. практически на пальцах.

ViPRosтвоя модель СФ - это проекция реальной БД, потому сама идея каких то миграций - ущербность полная

ты забыл привести доводы.

т.е.

я глотнул чайку, потому миграции EF -- просто гениальная идея!

блин, одно и то же поле для какой то цели (взгляда на систему, клиента) существует, а для других нет
как может какая та прога удалить это поле? (если конечно эта прога не есть "админка" СУБД)
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38986181
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosблин, одно и то же поле для какой то цели (взгляда на систему, клиента) существует, а для других нет
как может какая та прога удалить это поле? (если конечно эта прога не есть "админка" СУБД)

то, про что ты говоришь, называется простым и ёмким словом бардак .

это не прога, а слой БЛ. прога может либо юзать БЛ, либо обращаться к данным через единый REST/API. даже если я напьюсь до чёртиков, мне не придёт в голову раздавать прямой доступ к БД направо и налево.
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38986191
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRosблин, одно и то же поле для какой то цели (взгляда на систему, клиента) существует, а для других нет
как может какая та прога удалить это поле? (если конечно эта прога не есть "админка" СУБД)

то, про что ты говоришь, называется простым и ёмким словом бардак .

это не прога, а слой БЛ. прога может либо юзать БЛ, либо обращаться к данным через единый REST/API. даже если я напьюсь до чёртиков, мне не придёт в голову раздавать прямой доступ к БД направо и налево.
ты просто офигевший мальчик, какие то слои доступа и т.д. - ахинею не неси, кроме твоих игрушек есть и нормальные системы, которые с СУБД работают через АПИ СУБД, а не через твой огрызок для доступа к БД
это надо ж блин зомбироваться до такой степени
...
Рейтинг: 0 / 0
Покритикуйте EF code-first
    #38986249
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosты просто офигевший мальчик, какие то слои доступа и т.д. - ахинею не неси, кроме твоих игрушек есть и нормальные системы, которые с СУБД работают через АПИ СУБД, а не через твой огрызок для доступа к БД

унылого бардака в стране хватает. как и ребят, со своей унылой радостью ежедневно большой лопатой разгребать гумно лопатой. это факт.

какой ещё нафиг "огрызок"? чё ты несёшь? обкурился чтоле? я даю доступ к данным, именно к тем, которые нужны клиенту, именно в том виде, как они нужны клиенту. и клиент доволен как слон. учитывая, что уже давно есть такие вещи как OData, можно АПИ СУБД своё затолкать в гудок.

ViPRosэто надо ж блин зомбироваться до такой степени

угу, ты ещё расскажи нам, что лошади -- это лучшее в мире средство передвижение, а самолёты-авто-жд для полных даунов и лохов. эх, зомбированное человечество. лошади и кареты!

короче, глупочтей не гавари, да
...
Рейтинг: 0 / 0
25 сообщений из 245, страница 9 из 10
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Покритикуйте EF code-first
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]