Использование Entity Framework Core 2.0
Застрял в производственной базе данных компании, для которой определены первичные ключи для каждой таблицы, но не определены внешние ключи для каких-либо отношений.
Зависимые записи в базе данных имеют поля идентификаторовкоторые предназначены для связи с полями первичного ключа родительской записи, как вы обычно находите с отношением / ограничением внешнего ключа.Но все эти поля были созданы как INT NOT NULL и используют SQL по умолчанию «0».
В результате зависимые записи были вставлены с течением времени, не требуя указания связанной родительской записи.
Изначально я определил свои модели в EF с целыми числами и использовал свободную конфигурацию, чтобы указать "IsRequired».Это было сделано для того, чтобы я мог выполнить миграцию, чтобы создать тестовую базу данных для сравнения с производственной базой данных, чтобы убедиться, что мой код сначала был правильно закодирован.
Это может привести к проблеме при использовании «Включить» в моих запросах Linq, которое выполняет внутреннее объединение, которое приводит к удалению записей, содержащих 0, в полях идентификатора зависимой записи.
Единственный способ, с помощью которого я нашел эту работу, - смоделировать все поля идентификатора в зависимом объекте как целые числа, допускающие значение NULL, и удалить «IsRequired» из текущей конфигурации.
При использовании «Включить»он выполняет левое внешнее соединение, сохраняя все зависимые объекты.Это также означает, что любые свойства ссылки на включенных объектах устанавливаются в нуль вместо пустой строки.Эта часть, вероятно, может быть исправлена довольно легко.
Недостатком является то, что если бы я хотел сейчас использовать миграцию для создания базы данных, все поля id в зависимых записях были бы созданы как NULL.
Есть ли кто-нибудь, кто сталкивался с такой ситуацией?У кого-нибудь есть какие-либо предложения, чтобы попробовать, кроме подхода, который я использую?