Я работаю с приложением и структурой данных, созданной на основе ASP / ADO.NET, и преобразовываю ее часть в ASP.NET MVC.В структуре данных существует «необязательное взаимно-однозначное» отношение, в котором обе таблицы используют один и тот же первичный ключ и имя.По сути, эту таблицу можно считать «необязательным расширением» первичной таблицы.Вот примеры этой модели:
public class ZoneMedia
{
public int ZoneMediaID { get; set; }
public string MediaName { get; set; }
public int Width { get; set; }
public int Height { get; set; }
public virtual ZoneMediaText MediaText { get; set; }
}
public class ZoneMediaText
{
public int ZoneMediaID { get; set; }
public string Text { get; set; }
public int Color { get; set; }
}
Очевидно, что в коде EF 4.1 сначала возникает проблема, которая автоматически отображает это.Итак, я понимаю, что должен указать отображение явно.Я попробовал это:
modelBuilder.Entity<ZoneMedia>()
.HasOptional(zm => zm.ZoneMediaText);
modelBuilder.Entity<ZoneMediaText>()
.HasRequired(zmt => zmt.ZoneMedia)
.WithRequiredDependent(zm => zm.ZoneMediaText)
.Map(m => m.MapKey("ZoneMediaID"));
Но это все еще дает мне исключение относительно названия первичного ключа.
Schema specified is not valid. Errors:
(199,6) : error 0019: Each property name in a type must be unique. Property name 'ZoneMediaID' was already defined.
Я немного озадачен.Мне нужно адаптироваться к этой нетрадиционной структуре, которую я понимаю в EF 4.1, было бы намного проще просто добавить уникальный PK в необязательное отношение и сохранить отношение внешнего ключа в первичной таблице, но я не могу изменить структуру базы данных,Любой совет будет оценен.