У меня есть две таблицы базы данных с именем
SegmentSet SegmentSetGeometry
Они имеют первичный ключ с именем SegmentSetId
.(SegmentSetGeometry (зависимый) сегментSetId является внешним ключом для SegmentSet (первичный)).
SegmentSets может иметь 0 или 1 SegmentSetGeometries
У меня есть два класса, представляющих эти таблицы, которые называются SegmentSet
и SegmentSetGeometry
:
public class SegmentSet
{
public long SegmentSetId { get; set; }
// ...
public virtual SegmentSetGeometry SegmentSetGeometry { get; set; }
}
public class SegmentSetGeometry
{
public long SegmentSetId { get; set; }
public DbGeometry Geometry { get; set; }
public virtual SegmentSet SegmentSet { get; set; }
}
Вот их конфигурации:
public class SegmentSetConfiguration: EntityTypeConfiguration<SegmentSet>
{
public SegmentSetConfiguration()
{
ToTable("SegmentSet");
HasKey(x => x.SegmentSetId);
// ...
HasOptional(x => x.SegmentSetGeometry)
.WithRequired(x => x.SegmentSet);
}
}
public class SegmentSetGeometryConfiguration : EntityTypeConfiguration<SegmentSetGeometry>
{
public SegmentSetGeometryConfiguration()
{
ToTable("SegmentSetGeometry");
HasKey(x => x.SegmentSetId);
}
}
При попытке получить SegmentSet
из базы данных появляется следующая ошибка:
Invalid column name 'SegmentSet_SegmentSetId'.
Я нашел эту ссылку https://docs.microsoft.com/en-us/ef/ef6/modeling/code-first/fluent/relationships и решил поменять отношения и попытался:
public class SegmentSetConfiguration: EntityTypeConfiguration<SegmentSet>
{
public SegmentSetConfiguration()
{
ToTable("SegmentSet");
HasKey(x => x.SegmentSetId);
// ...
}
}
public class SegmentSetGeometryConfiguration : EntityTypeConfiguration<SegmentSetGeometry>
{
public SegmentSetGeometryConfiguration()
{
ToTable("SegmentSetGeometry");
HasKey(x => x.SegmentSetId);
HasRequired(x => x.SegmentSet)
.WithOptional(x=>x.SegmentSetGeometry);
}
}
Но все равно не работает.Я использую пример, который они дают, и он не работает, и я посмотрел на все подобные переполнения стека и все еще не работает