По какой-то причине я заставил свой разум некоторое время вернуться к проекту EF 6, чтобы попытаться избежать именования внешних ключей. Я определил большую часть модели, не проверяя его постепенно и поэтому я бегу в многочисленности и проблем неполной Fluent определения API:Нарушения ограничения множественности с необязательно необходимым кодом EF Code First + Fluent?
Отношения от «User_InternalAuth» AssociationSet находится в состоянии «удалено». При заданных ограничениях множественности в состоянии «Удалено» должно также быть соответствующее значение «User_InternalAuth_Target».
В одном случае, вот код:
nModelBuilder.Entity<User>()
.HasOptional<InternalAuth>(u => u.InternalAuth)
.WithRequired(a => a.User)
.WillCascadeOnDelete(true);
Я понимаю, что он говорит:
- Лицо,
User
- имеет дополнительное свойство
InternalAuth
типаInternalAuth
- На другом конце,
InternalAuth
имеет необходимое свойствоUser
, так что всеInternalAuth
s имеютUser
s, ноUser
s может иметь или не иметь «InternalAuth. - Если
User
будет удален, так что делает егоInternalAuth
, если у него есть один (делает это переопределить необязательное поведение лечения УСТРОЙСТВА как nullables?)
Однако при попытке удалить User
я получаю исключение о множественность некоторой связи между InternalAuth
и User
.
Верно ли, что если EF понимает кратность отношений есть способ для того, чтобы обеспечить ему уникальное имя столбца для него, так что каноническое именования?
Если да, то вам действительно нужно явно определять внешние ключи, аннотируя модель или через Fluent API?
Если нет, стоит ли это целесообразно или желательно, чтобы я старался избежать этого? (Я подумываю о переносе модели данных, администрировании базы данных, любых причудах EF)
Почему попытка удалить вышеупомянутое отношение нарушает ограничение множественности? Что еще нужно знать?