我有两个表,从属表有一个不是主键的外键。这是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; }
}
答案 0 :(得分:1)
这是0比1的关系
不,不是。你希望它,但它是一对多的关系。当实体具有独立的外键(即也不是其主键)时,您不能将其建模为EF中的1:1关联。
因此,您将此模型定义为常规的1:n关联,并在业务逻辑中强制执行它的1:1。
关于帮助强制执行1:1的事情是在FormulaId
字段上创建唯一索引。现在,当您尝试为MayHaveAFormula
创建第二个Formula
时,数据库将抛出一个丑陋的异常。当然,这不应该取代业务逻辑,但它是一个额外的保护措施。