【发布时间】:2019-05-20 20:46:39
【问题描述】:
我有两个名为
的数据库表段集 SegmentSetGeometry
它们都有名为SegmentSetId 的主键。 (SegmentSetGeometry(依赖)segmentSetId 是 SegmentSet(主)的外键)。
SegmentSet 可以有 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);
}
}
但还是不行。我正在使用他们给出的示例,但它不起作用,我查看了所有类似的堆栈溢出,但仍然不起作用
【问题讨论】:
标签: c# entity-framework entity-framework-6 relationship