我试图在两个实体之间建立一对一或一对一的关系,并且我希望依赖实体仍然包含它自己的Indentity列,而不是共享密钥。EF代码优先 - 配置一对零关系但不共享PK/FK
我想要做的尽可能的按照约定,而不是宣布明确的东西,不需要明确的声明(因此,没有不必要数据注释或流畅API条款)
的entites的:
public class File
{
public int FileId {get;set;}
//some omitted file properties
public virtual Task Task {get;set;}
}
public class Task
{
public int TaskId {get;set;}
//some omitted task properties
public int FileId {get;set;}
public virtual File File {get;set;}
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<File>().HasOptional(f => f.Task).WithRequired(t => t.File);
base.OnModelCreating(modelBuilder);
}
这将创建一个奇怪的关系,其中TaskId是Tasks表的PK和FK列。我认为这意味着它应该与文件ID具有相同的值? (这是一个问题:))
那么,我该如何让TaskId保持自己的顺序值,并让FileId成为Files表的外键呢?
或者在1-0..1的情况下,我应该摆脱TaskId属性并使FileId成为PK/FK属性?
干杯!
非常感谢,很好的回答:) – Bartosz