【问题标题】:entity framework foreign key where dependent key is not the primary key依赖键不是主键的实体框架外键
【发布时间】:2015-01-20 17:28:08
【问题描述】:

我有两个表,从属表有一个不是主键的外键。这是 0 对 1 的关系。如何设置与实体框架 6、代码优先、流畅 API 的关联?这些表已经存在于数据库中。

public class Formula
{
    public int Id { get; set; } /*Primary key*/
    public string Name { get; set; }
}

public class MayHaveAFormula
{
    public int Id { get; set; } /*Primary key*/
    public int? FormulaId { get; set; } /*links to Formula.Id */
    public Formula Formula { get; set; }
}

【问题讨论】:

    标签: entity-framework-6 fluent-interface


    【解决方案1】:

    这是 0 对 1 的关系

    不,不是。你想要它,但它是一对多的关系。当一个实体有一个独立的外键(即不是它的主键)时,您不能在 EF 中将其建模为 1:1 关联。

    因此,您将其建模为常规的 1:n 关联,并在业务逻辑中强制执行它为 1:1。

    帮助实施 1:1 可以做的事情是在 FormulaId 字段上创建唯一索引。现在,当您尝试为Formula 创建第二个MayHaveAFormula 时,数据库将抛出一个丑陋的异常。当然这不应该取代业务逻辑,但它是一个额外的保障。

    【讨论】:

    • 好的,有道理。所以我能做的最好的事情是: HasOptional(fsa => fsa.Formula).WithMany().HasForeignKey(a => a.FormulaId); - 对于 MayHaveFormulaClass 的配置?
    • 是的,这是标准的 1:n 映射。
    猜你喜欢
    • 1970-01-01
    • 2018-12-14
    • 2011-07-20
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 2023-04-02
    相关资源
    最近更新 更多