Entity framework core EF核心:一对一';卫星';表需要自己的键吗?
以下是我的设想:Entity framework core EF核心:一对一';卫星';表需要自己的键吗?,entity-framework-core,Entity Framework Core,以下是我的设想: public class Main { public Guid Id { get; set; } public string Something { get; set; } public MoreDetail OptionalDetail { get; set; } } public class MoreDetail { public Guid MainId { get; set; } public Main Main { get; s
public class Main
{
public Guid Id { get; set; }
public string Something { get; set; }
public MoreDetail OptionalDetail { get; set; }
}
public class MoreDetail
{
public Guid MainId { get; set; }
public Main Main { get; set; }
public string MoreInfo { get; set; }
}
// model building code:
mainBuilder.HasOne(m => m.OptionalDetail).WithOne(d => d.Main).IsRequired(false);
预期:
是moredeail
Main
- 主键是
;它不需要自己的IDMainId
实体类型“Main”需要定义一个键。
尝试:
- 添加
。产生相同的错误moreDetailBuilder.HasKey(d=>d.MainId)
- 将
添加到.HasForeignKey(d=>d.MainId)
modelbuilder代码中。给定Main
实体类型“moredeail”上的外键{'MainId'}不能标记为可选,因为它不包含任何可为null类型的属性。可以根据需要标记任何外键,但只有至少具有一个可为null类型属性且不属于主键的外键才能标记为可选。
- 改为使用
。密钥设置和插入记录工作正常。。但在查询时,EF Core生成一个.IsRequired(true)
,这意味着如果没有记录,则不会返回任何内容:(内部联接