【发布时间】:2017-05-24 16:45:33
【问题描述】:
我正在尝试在两个实体之间建立一对零或一的关系,并且我希望依赖实体仍包含其自己的 Indentity 列,而不是共享键。
我想尽可能地遵循约定,并且不明确声明任何不需要明确声明的内容(因此,没有不必要的数据注释或流畅的 api 子句)
实体:
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 属性?
干杯!
【问题讨论】:
标签: c# sql-server entity-framework