У меня есть Entity, называемый User. Пользователь должен быть использован в многоязычной среде Так Пользователь выглядитОшибка удаления каскада в EF 4.2 (сначала код)
class User{
virtual ICollection<TextEntry> Name {get; set;}
virtual ICollection<TextEntry> Info {get; set;}
...
}
class TextEntry
{
int id {get; set;}
string Text {get; set;}
string Culture {get;set;}
}
Также у меня есть правило для пользователя
modelBuilder.Entity<User>()
.HasMany(q => q.Name)
.WithOptional()
.WillCascadeOnDelete();
modelBuilder.Entity<User>()
.HasMany(q => q.Info)
.WithOptional()
.WillCascadeOnDelete();
С этим правилом EF не может создать модель Esception сообщения является «Вводя ограничение внешнего ключа «User_Info» в таблице «TextEntry» может вызывать циклы или несколько каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY. \ R \ nНевозможно создать ограничение. См. Предыдущие ошибки. "
Без этих правил я получаю исключение при попытке удалить пользователя из-за ограничений ссылок.
Как можно решить эту проблему при создании дополнительной сущности для данных User.Info?
Но что, если у меня будет 3 или более поля, которые должны быть многоязычными? Я не думаю, что отличная идея создать новый экземпляр для нового поля. Потому что все они имеют одинаковую функциональность, но разные имена. – Ph0en1x
@ Ph0en1x Да, правда. Но без создания базы данных вне Entity Framework с некоторыми пользовательскими частями (представления [могут помочь имитировать одну таблицу], триггеры [могут помочь на самом деле каскадировать] и т. Д.), Вы не будете двигаться намного дальше. –
Я очень надеюсь, что этот вопрос можно решить с помощью трюка с правилами EF. – Ph0en1x