EF代码首先定义FK正确(1/0至1/0)
问题描述:
我无法定义以下DB结构,使用导航属性:EF代码首先定义FK正确(1/0至1/0)
Table: Batch
PK: Id
FK: Model_ID (can be also null)
Table: Model
PK: Id
no FKs related to Batch
所以这有点像1/0至1/0的关系。 Model
& Batch
可以不知道对方存在。请注意,我只需要'批'而不是'模型'中需要FK列。在'模型'中,我只想获取相关Batch
(如果存在)。但有些型号和一些批次是相互连接的。
我定义了下面,却是
public class BaseData {
public Guid Id {get; set; }
public Guid? ModelId {get; set; }
public ModelData ModelId { get; set; }
}
public class ModelData {
public Guid Id {get; set; }
public Guid? BatchId { get; set; }
public BatchData Batch { get; set; }
}
我能够确定正确的数据库结构,如果我删除一个导航属性 - 从ModelData
BatchData Batch
。 但是,我希望在这两个类中都有导航属性,这有可能吗?
我试过不同的配置,都不起作用。 一个例子我试着:
ModalConfig:
HasOptional(X => x.Batch) .WithRequired(X => x.Model);
BatchConfig:
HasOptional(x => x.Model)
.WithOptionalPrincipal();
这并不在DB创建FKS。
答
依赖PK ID也是FK ID。
public class BatchData {
[ForeignKey("Model")]
public Guid Id {get; set; }
// public Guid? ModelId {get; set; }
// public ModelData ModelId { get; set; }
public ModelData Model { get; set; }
}
委托人在模型中不能有FK ID。
public class ModelData {
public Guid Id {get; set; }
// public Guid? BatchId { get; set; }
public BatchData Batch { get; set; }
}
这将工作没有流利的API配置。