实体框架外键,其中依赖键不是主键

时间:2015-01-20 17:28:08

标签: entity-framework-6 fluent-interface

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

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

1 个答案:

答案 0 :(得分:1)

  

这是0比1的关系

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

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

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