|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
ViPRosесть и нормальные системы вот что удивительно, нормальные системы уже много лет успешно юзают REST/API, при этом клиенты не имеют ни малейшего понятия, как эти данные там храняться, SQL, noSQL или вообще в текстовых файлах разложены, всем плевать, люди бизнес делают, бабки текут рекой, все счастливы и довольны. но нет же. это всё ненормальные системы. нормальные системы не должны быть лёгкими и простыми. они должны быть как большая куча УГ, пипец какими сложными, чтобы отдельные очкарики имели возможность быть незаменимыми и до пенсии получать свою вожделенную зарплату. хотя, ничего против этого не имею. каждому своё. только про "нормальность" систем мне не затирай плз. чай не вчера родился, и не в одной/двух конторках просидел со студенчества. повидал всякого, уж поверь мне. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 20:00 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
hVosttчай не вчера родился, и не в одной/двух конторках просидел со студенчества. повидал всякого, уж поверь мне. Но щас-то ты на нормальном месте - всё по феншую делаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 20:20 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Alexey2112Но щас-то ты на нормальном месте - всё по феншую делаете? всегда есть над чем работать и чему поучиться, идеал недостижим ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2015, 00:33 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
А подскажите насчёт такой ситуации. Вот есть модель со свойством, которое надо представить в БД - коллекция. В БД коллекций нет. Предлагают отобразить коллекцию в строку: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Хочу, чтобы пользователь-программист этого класса не вызывал свойство Values_Internal - оно не должно мозолить ему глаза. Оно только запутывает. Программист не должен и ему не интересно знать, как там внутри модель устроена, зачем нужно два свойства с похожими названиями и какие костыли решают какие проблемы. Вот и хотелось бы скрыть это свойство из выдачи IntelliSense. Как сделать? Ну и стоит ли это делать вообще? Т. е. это нормально, что пользователь класса видит кучу похожих свойств и ему надо лазить внутрь класса или читать документацию на него, чтобы разобраться, какое свойство ему нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 09:32 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
В смысле, что написал я XML-комментарий "For internal use only." для этого свойства. А толку? Лучше бы оно изначально пользователю глаза не мозолило - выкинуть его из выдачи Интеллисенсом вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 09:33 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Нашёл такой костыль http://www.codeproject.com/Tips/828444/Property-Mapping-in-Entity-Framework-Code-First авторThe nonpublic properties must be mapped using the Fluent API configuration. Т. е. только делать свойство приватным, а потом флюэнтом его мапить? Проще никак? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 09:36 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Потому что мапить приватные свойства - то ещё извращение, плюс какие-то ристрикции наваливаются кучей . ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 09:41 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Alexey2112Хочу, чтобы пользователь-программист этого класса не вызывал свойство Values_Internal - оно не должно мозолить ему глаза. Оно только запутывает. Программист не должен и ему не интересно знать, как там внутри модель устроена, зачем нужно два свойства с похожими названиями и какие костыли решают какие проблемы. Вот и хотелось бы скрыть это свойство из выдачи IntelliSense. Как сделать? EditorBrowsableAttribute ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 10:30 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
petalvikAlexey2112Хочу, чтобы пользователь-программист этого класса не вызывал свойство Values_Internal - оно не должно мозолить ему глаза. Оно только запутывает. Программист не должен и ему не интересно знать, как там внутри модель устроена, зачем нужно два свойства с похожими названиями и какие костыли решают какие проблемы. Вот и хотелось бы скрыть это свойство из выдачи IntelliSense. Как сделать? EditorBrowsableAttribute Во, спасибо! Это как раз то, что нужно, чтобы не заморачиться со всякими самописными конвенциями, выражениями и прочими флюэнтами. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 11:16 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Ляя! Я уже начинаю ненавидеть этот code first! Фак зис щит! Каскадное удаление - это так же нужно и обычно, как и первичный и внешний ключи. Почему каскадное удаление не сделать без многословного флюэнта? Почему вообще логику построения БД в code first надо размызывать не только по классам POCO, но и ещё по всяким методам всяких контекстов, самописных конвенций и прочих поведений даже в простых случаях ?! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 13:59 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Тэкс... Вот ситуация как по ссылке - отношение 1-1..0. Если я поставлю первичному ключу (который одновременно и внешний) в таблице-потомке атрибут Required, то каскадное удаление будет работать? Я думал, что раз свойство обозначено как первичный ключ, то оно Required по умолчанию. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 14:04 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Alexey2112Тэкс... Вот ситуация как по ссылке - отношение 1-1..0. Если я поставлю первичному ключу (который одновременно и внешний) в таблице-потомке атрибут Required, то каскадное удаление будет работать? Я думал, что раз свойство обозначено как первичный ключ, то оно Required по умолчанию. Правда, после Required это будет уже не 1-1..0, а 1-1. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 14:16 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Alexey2112Alexey2112Тэкс... Вот ситуация как по ссылке - отношение 1-1..0. Если я поставлю первичному ключу (который одновременно и внешний) в таблице-потомке атрибут Required, то каскадное удаление будет работать? Я думал, что раз свойство обозначено как первичный ключ, то оно Required по умолчанию. Правда, после Required это будет уже не 1-1..0, а 1-1. Вот у меня стоит в миграции nullable:false. Стоят атрибуты Key и ForeignKey. Тут написано авторIf a foreign key on the dependent entity is not nullable, then Code First sets cascade delete on the relationship. Ну, я сделал всё по конвенциям. А каскадного удаления нет - пишет "Конфликт инструкции DELETE с ограничением REFERENCE". Чего ему ещё надо? Добавляю атрибут Required - миграция его не видит. Добавление атрибута - это не зименение модели? Да и что в миграции написать, если и так уже в инициальной миграции стоит на внешнем ключе TestId = c.Int(nullable: false), ? Ничего не понял с этим CF. Помню только, что когда флюэнтом добавлял - каскадное удаление работало. А когда на атрибутах переделал - фигвам. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 14:33 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Удаляю запись, кстати, так Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 14:34 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Блин, похоже, без флюэнта каскадное удаление не сделать. Хвост, ты как каскадное удаление делаешь? Своё соглашение пишешь, или у тебя и так всё работает? Вон, на SO у людей не работает без флюэнта, как и у меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 14:44 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Было Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Стало (добавил атрибут Required, удалил флюэнт-вставку Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Получилась миграция Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Эти в EF CF совсем там упоролись, чтоли? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 15:15 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Короче, без флюэнта всё через жопу даже в простых случаях. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 15:16 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Ну, так и есть. Думал, это я с миграциями напутал. Создал новую БД с упрощённой схемой - только две таблицы со связью 1-1..0. Ну и без флюэнта связь без каскадоного удаления создалась даже по такому сочетанию атрибутов на внешнем ключе Код: c# 1.
А с флюэнтом создалось как надо, вне зависимости от наличия/отсутствия атрибута Required (получается, что он тут лишний вообще). Вобщем, для себя сделал такой вывод - без Fluent API невозможно сделать даже относительно простую базу данных в EF CF. Даже каскадное правило удаления для отношений 1-1 или 1-1..0 атрибутами и конвенциями из коробки не сделать. Так что не знаю, чего там Хвост одними изкоробочными вещами обходится. Ну либо он просто не делал БД с такими отношениями и с каскадными удаления в CF и без флюэнта. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 17:35 |
|
Покритикуйте EF code-first
|
|||
---|---|---|---|
#18+
Эх, никто сюда не заходит... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 19:37 |
|
|
start [/forum/topic.php?fid=17&gotonew=1&tid=1349537]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
182ms |
get topic data: |
8ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 312ms |
0 / 0 |