|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Подскажите люди добрые такой вопрос ( может кто встречался) Есть модель: Код: 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. 12.
как вы наверно заметили, поле statBeginID и statEndID ссылаются на ID модели Station. Для чего это сделано? Station - хранит станции. statBeginID-это станция отправления локомотива statEndID-станция прибытия локомотива. Так вот как мне связать эти таблицы? Вот контроллер: Код: c# 1. 2. 3. 4. 5.
и тут ошибка: SqlException: Недопустимое имя столбца "Station_ID". Как мне это исправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2019, 04:56 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Тебе надо cконфигурировать навигационные свойства в методе контекста OnModelCreating. Что-то наподобие: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2019, 07:02 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
fkthat Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
ругается на .HasOne(x => x.statBegin) :( ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2019, 12:42 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Hanuman, Возьмите любой пример один ко многим с FK. И отработайте его чтоб работало. ... Поле statBeginID лишнее. Есть поле класса. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2019, 12:51 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Hanumanругается на .HasOne(x => x.statBegin) :( Мне сейчас без интеллисенса вспомнить точный вызов тяжело, поизучай вот это: https://docs.microsoft.com/en-us/ef/core/modeling/relationships - там все описано. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2019, 13:17 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Petro123 Поле statBeginID лишнее. Есть поле класса. Не совсем понял, почему это поле лишнее? А тогда поле statEndID тоже лишнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2019, 15:28 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Hanuman, Угу. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2019, 15:32 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
HanumanPetro123 Поле statBeginID лишнее. Есть поле класса. Не совсем понял, почему это поле лишнее? А тогда поле statEndID тоже лишнее? Вообще, можно и так и так. Раньше то ли требовалось (то ли просто было принято - уже не помню) дублировать навигационные свойства айдишниками ентитей на которые они указывают. Сейчас это необязательно, есть, в общем-то сторонники такого подхода (иногда это позволяет некоторые дела ускорить). Лично мне эта избыточность не нравится, ибо POCO, коде-ферст и бла-бла-бла. К тому же (не уверен насчет обычного EF) в ефкоре это доступно через т.н. Shadow Properties (это поля БД, которые доступны, но не отмепленны на свойства объекта). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2019, 15:53 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Hanuman, Сейчас попробовал (EF Core) смотри, тут есть еще такая засада, что есть ограничение - одно свойство, в этом случае Код: c# 1.
не может учавствовать сразу в двух отношениях (ну, это, типа ЕФ так себя ведет). Так что надо либо его вообще убрать и работать только через свойства statBegin, statEnd и делать так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
, либо заводить два разных WeightNorms: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Ни в том, ни в другом случае на структуру самой БД это не повлияет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2019, 16:23 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Во втором куске кода, там конечно, Код: c# 1.
и Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2019, 16:25 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
fkthat Код: c# 1.
Как я понял в первом варианте в модели я это удаляю. тогда у меня модель останется: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Ну и естественно код который вы предложили. Насчет использования Код: c# 1. 2.
Это может быть и лишнее, но на данный момент мне так проще, я вижу все поля своих таблиц, и мне как новичку это удобно. В моем коде если вы его посмотрите, многое можно оптимизировать, что то лишнее, что то можно было более компактно описать :) так что не судите строго за "кривой код" :) за все советы спасибо :) завтра буду тестировать, и отпишусь о результатах :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2019, 19:11 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Hanuman, да, только Код: c# 1.
убери еще, а то ошибка будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2019, 19:13 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Hanuman, Чем неудобны доп. поля с айдишкаим - они при изменении сущности могут рассинхронизироваться с указателями. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2019, 19:16 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
fkthat Чем неудобны доп. поля с айдишкаим - они при изменении сущности могут рассинхронизироваться с указателями. Получается в самой БД эти поля тоже не нужны? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2019, 05:42 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Собственно вот так у меня заработало: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
На HasOne у меня ругался, возможно моя версия EF это не поддерживает. .IsRequired(false) - тоже начал ругаться, просто удалил ( может я не прав поправьте меня) Спасибо Вам товарищи что помогли разобраться :) Эта наверно не последняя моя тема с просьбой помочь, так что буду Вам рад :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2019, 06:16 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Hanumanfkthat Чем неудобны доп. поля с айдишкаим - они при изменении сущности могут рассинхронизироваться с указателями. Получается в самой БД эти поля тоже не нужны? Нет, в БД они конечно нужны (иначе как EF посвязывает эти сущности). Просто при code first они автоматом создадутся в миграции, при db first нужен будет дополнительный fluent вызов чтобы дать EF понять какое поле в БД отвечает за эту связку. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2019, 06:42 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
HanumanСобственно вот так у меня заработало: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
На HasOne у меня ругался, возможно моя версия EF это не поддерживает. .IsRequired(false) - тоже начал ругаться, просто удалил ( может я не прав поправьте меня) Спасибо Вам товарищи что помогли разобраться :) Эта наверно не последняя моя тема с просьбой помочь, так что буду Вам рад :) Да, я пробовал на EF Core - там немного по-другому. Но, вообще, мне кажется, что EF Core и так бы заработал, на основе conventions - он по-умолчанию если видит указатель от одной entity к другой, то связывает их по FK базы данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2019, 06:46 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Вот еще вопрос, к теме не относится, но я его задам что бы не создавать новую тему :) В модели есть поля: Код: c# 1. 2. 3.
База создавалась вот так: Код: sql 1. 2. 3.
у меня допускается значение NULL, но вылазит ошибка The 'waSCC' property on 'WorkArea' could not be set to a 'null' value. You must set this property to a non-null value of type 'System.Decimal Почему то ругается на нулевые поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2019, 07:22 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Тут наверно нужно использовать все таки IsRequired() , но у меня на него почему то ругается.... Может опять из за версии EF :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2019, 07:27 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Hanuman, Код: c# 1. 2. 3.
для nullable полей БД надо свойства модели тоже объявлять как nullable, имхо, это даже интуитивно должно быть очевидно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2019, 08:17 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
fkthat Вот моя не внимательность :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2019, 15:41 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Так а я не понял - почему у ТС не работает код из первого примера? У него же всё правильно (почти). Petro123Поле statBeginID лишнее. Есть поле класса. Что это значит?? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 11:48 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Агнец за бортомТак а я не понял - почему у ТС не работает код из первого примера? Потому что отношение было ен сконфигурировано. Там же ниже все расписано. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 12:14 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
fkthatАгнец за бортомТак а я не понял - почему у ТС не работает код из первого примера? Потому что отношение было ен сконфигурировано. Там же ниже все расписано. Ты про Fluent API? Это для какой EF? Для EF 6 - Fluent API - опция, выбор. Того, что сделал ТС - должно быть достаточно. И потом - SqlException - не про "отношение было ен сконфигурировано" Может быть - он пытается создать БД, не уничтожив предыдущую? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 12:30 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Агнец за бортомЧто это значит?? это оверхед. В коде можно и нужно работать через поле класса сущности, а не через поле ID сущности. Кодами FK занимается ОРМ. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 15:23 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Petro123это оверхед. И давно? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 17:37 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Агнец за бортомPetro123это оверхед. И давно? В следующий раз вставь javascript:document.querySelectorAll('table.af-userid-27411').forEach(e => e.style.display = 'none') в адресной строке браузера и нажми Ввод :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 17:43 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Агнец за бортомPetro123это оверхед. И давно?тебе сказали что фореген кей не пишут. А ты про слово оверхед. Лучше скажи - НЕТ, Я ПИШУ FK. И закончим на этом) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 20:21 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Petro123Агнец за бортомпропущено... И давно?тебе сказали что фореген кей не пишут. А ты про слово оверхед. Лучше скажи - НЕТ, Я ПИШУ FK. И закончим на этом) Я ни}{рена не понял. Давно в EF не надо указывать вот это? Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 20:36 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Агнец за бортомвот этовот это что вот это? Разговор был про конкретный FK. А ты написал белиберду с гуидом. Нормальный FK с integer не надо дублировать со времен ОРМ. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 20:56 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Petro123А ты написал белиберду с гуидом. Петя, тебе гуид не понравился? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 22:19 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
fkthatСейчас это необязательно, есть, в общем-то сторонники такого подхода Где-нибудт в доке, есть про это? Вот тут указывают. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 22:24 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Агнец за бортомГде-нибудт в доке, есть про это? No Foreign Key Property No Foreign Key PropertyWhile it is recommended to have a foreign key property defined in the dependent entity class, it is not required. If no foreign key property is found, a shadow foreign key property will be introduced with the name <navigation property name><principal key property name> ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 23:56 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
fkthatАгнец за бортомГде-нибудт в доке, есть про это? No Foreign Key Property No Foreign Key PropertyWhile it is recommended to have a foreign key property defined in the dependent entity class, it is not required. If no foreign key property is found, a shadow foreign key property will be introduced with the name <navigation property name><principal key property name> И в "простой" EF можно было также? А как менять значение такого поля? С фронта приходит ID, получается - надо доставить из базы сущность по этому ID, чтобы её присвоить? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 00:30 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Агнец за бортомИ в "простой" EF можно было также? Да, со времен появления code-first и POCO. Агнец за бортомА как менять значение такого поля? С фронта приходит ID, получается - надо доставить из базы сущность по этому ID, чтобы её присвоить? В коре это можно сделать через соответствующее "shadow property", как по ссылке написано. В "обычном" - не знаю, подозреваю даже, что никак - только доставать из базы связанную сущность. Но, в общем-то, все равно, перед тем как менять FK неплохо бы убедиться, что то, на что он будет ссылаться действительно существует (т.е. как раз эту сущность и запросить), потому что иначе надо ловить и обрабатывать SqlException, а с этим вообще беда, т.к. сиквель инфу об ошибке вообще практически никак не стуктурирует - пришла тебе строка с ошибкой, и бери гадай, что конкретно это за ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 01:35 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Агнец за бортомPetro123А ты написал белиберду с гуидом. Петя, тебе гуид не понравился?да. Зачем запутывать пример про FK? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 07:10 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Агнец за бортомА как менять значение такого поля? С фронта приходит ID, получается - надо доставить из базы сущность по этому ID, чтобы её присвоить?конкретнее. Обычно приходит сущность. И обычно update FK не делают. А доставать сущность из базы практически всегда надо. БЛ ведь). ... Покажи как ты меняешь базу не вытаскивая сущности. Ближе к коду! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 07:16 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Petro123Обычно приходит сущность. Ты что несёшь? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 09:51 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Агнец за бортомPetro123Обычно приходит сущность. Ты что несёшь?бинес сущность в json. Ты не выспался? Или терминологию забыл. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 09:57 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Я понял. У тебя только одна транзакция и сущность которая в базе. Поэтому такая реакция. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 10:00 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Стало интересно чем все закончится :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 16:56 |
|
Модель со связанными таблицами
|
|||
---|---|---|---|
#18+
Hanuman, забанят петю :( ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 17:57 |
|
|
start [/forum/topic.php?all=1&fid=17&tid=1349124]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 251ms |
total: | 417ms |
0 / 0 |