EF代码首先正确定义FK(1/0到1/0)

时间:2014-08-28 07:02:52

标签: .net entity-framework

我无法使用导航属性定义以下数据库结构:

    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; }
}

如果删除一个导航属性,我可以定义正确的数据库结构 - 来自BatchData Batch的{​​{1}}。 但是,我想在两个类中都有导航属性,是否可能?

我尝试了不同的配置,但都没有效果。 我试过的一个例子是:

ModalConfig:

HasOptional(x => x.Batch)       .WithRequired(x => x.Model);

BatchConfig:

ModelData

这不会在DB中创建FK。

1 个答案:

答案 0 :(得分:0)

依赖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配置的情况下工作。