Я пытаюсь заставить CodeFirst работать, и у меня проблема с внешними ключами и связанными объектами.Вероятно, это из-за того, что я не соответствую «условию» и еще не понимаю, как правильно переопределить условные обозначения в моей настройке.Пожалуйста, помогите, если можете.
У меня есть две таблицы в моей существующей базе данных:
create table locations
(
ID int identity primary key
, name varchar(50) not null
)
create table meetings
(
ID int identity primary key
, whatever varchar(50) null
, LocationID int not null constraint FK_meetings_LocationID foreign key references locations(ID)
)
И модели настроены так:
public class Location
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Meeting> Meetings { get; set; }
}
public class Meeting
{
public int ID { get; set; }
public string Whatever{ get; set; }
public Location HeldAt { get; set; }
}
Наконецмой контекст настроен так:
public class v1Context : DbContext
{
public v1Context(string ConnectionString)
: base(ConnectionString)
{}
public DbSet<Location> Locations { get; set; }
public DbSet<Meeting> Meetings { get; set; }
//protected override void OnModelCreating(DbModelBuilder modelBuilder)
//{
// modelBuilder.Entity<Location>().HasKey(k => k.ID);
// modelBuilder.Entity<Meeting>().HasKey(k => k.ID);
//}
}
И я получаю следующую ошибку "Произошла ошибка при выполнении определения команды. Подробности смотрите во внутреннем исключении" .. С InnerExceptin of:
InnerException = {"Invalid column name 'HeldAt_ID'."}
Я пробовал различные заклинания OnModelCreating, но безуспешно.Кажется очевидным, что проблема в том, что он не знает, как правильно перемещать FK «LocationID» к классу Location с его полем ID.Но я не смог выяснить это.
Каким-то образом я подумал, что, поскольку он имеет тип «Location» и что класс Location также независимо сопоставляется с базой данных, и потому что существуют правильные отношения FKв базе данных, это будет просто "выяснить это".
Любая помощь будет принята с благодарностью.