首先将实体框架外键作为主键代码

本文关键字:代码 实体 框架 | 更新日期: 2023-09-27 17:57:01

我有两个代码优先模型,Foo和FooState,其中Foo有一个可选的FooState。

public class Foo
{
    [Key]
    public int FooId { get; set; }
    public FooState FooState { get; set; }
}
public class FooState
{
    [Key]
    public int FooStateId { get; set; }
    [Required]
    public int State { get; set; }
    [Required]
    public Foo Foo { get; set; }
}

但是当我尝试像这样将外键添加到 FooState 时,这工作正常

public class FooState
{
    [Key]
    public int FooStateId { get; set; }
    [Required]
    public int State { get; set; }
    [ForeignKey("Foo")]
    [Required]
    public int FooId
    public Foo Foo { get; set; }
}

这一切都失败了,因为FooStateId实际上使用FooId作为主键。 从数据库的角度来看,这是有道理的。

但是,我不希望在保存 FooState 记录时不必填充 Foo 的实例,但仍保留所需的属性。

这将允许我在dto中发送FooId和状态,如果我想更改其状态,则不必从数据库中检索整个Foo对象。

我应该如何首先使用 EF 代码进行设置?

首先将实体框架外键作为主键代码

我想

我会试一试,效果很好。

public class FooState
{
    [Required]
    [Key]
    [ForeignKey("Foo")]
    public int FooStateId { get; set; }
    [Required]
    public int State { get; set; }
    public Foo Foo { get; set; }
}