|
Модель со связанными таблицами
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=17&fpage=3&tid=1349124]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 156ms |
0 / 0 |