Приложение использует EF 6.1 против ранее существовавшей базы данных.Однонаправленная БД сначала многим многим с картой по-прежнему кажется, что требуется свойство навигации
У меня есть однонаправленное отношение многих к многим из (имена классов были изменены, чтобы сделать этот пример глупым) Fans
до Celebrities
. например каждый экземпляр Fan
следует за одним или несколькими Celebrities
, но каждый экземпляр Celebrity
не отслеживает, какие Fans
следуют за указанным Celebrity
.
С этой целью класс Fan
имеет свойство навигации до ICollection<Celebrity>
, но не наоборот. Как видно из приведенного ниже класса карты, составная таблица связывает два.
К сожалению, var celebrities = db.Celebrities.ToList();
получает мне ошибку:
Invalid column name 'Fan_Id'.
Может кто-то пожалуйста, скажите мне, что я сделал не так? У меня есть несколько однонаправленных отношений «один ко многим» в одном и том же приложении, которые работают. A (несколько) сокращенное изложение сущностей и их карт:
public class Celebrity
{
public int Id { get; set; }
public string Name { get; set; }
// by design, no navigation property to ICollection<Fan>
}
public class Fan
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Celebrity> FollowedCelebrities { get; set; }
}
public class CelebrityMap : EntityTypeConfiguration<Celebrity>
{
public CelebrityMap()
{
HasKey(t => t.Id);
ToTable("Celebrities");
Property(t => t.Id).HasColumnName("CelebrityId");
Property(t => t.Description).HasColumnName("Name");
}
}
public class FanMap : EntityTypeConfiguration<Fan>
{
public FanMap()
{
HasKey(t => t.Id);
ToTable("Fans");
Property(t => t.Id).HasColumnName("FanId");
Property(t => t.Name).HasColumnName("Name");
HasMany(t => t.FollowedCelebrities)
.WithMany()
.Map(m =>
{
m.ToTable("FanCelebrityAssignments");
m.MapLeftKey("FanId");
m.MapRightKey("CelebrityId");
});
}
}
Я не уверен, как это исправить, но исключение означает, что существует некоторый столбец «Fan_Id», созданный в таблице «Celebrity» (но, конечно, не присутствует). Как-то он предполагает, что отношения между «Фан-Знамени» - это «один-много» (в то время как это должно быть «много-много»). Я вижу, что вы пытались настроить отношения как «многие-многие» внутри «FanMap», но не уверены, достаточно ли этого. – Hopeless
Вы проверили, что в БД применены все миграции? Похоже, вы попробовали другую конфигурацию, применили ее к БД, но не отменили/отменили ее правильно. Или что-то. – Vlad274
Да, или что-то в этом роде. Я понял это, см. Ответ. – wilee