界面作为 EntityFramework 核心中的字段

Interface as field in EntityFramework Core

有没有办法在 EF Core(CodeFirst,最新版本 5.0)中将接口用作 class 的字段?

public class Order
{
   public int Id { get; set;}
   public IUser CreatedBy { get; set; }
}

您可以使用 db 中不存在的导航属性接口。但是对于 Db 列,您需要具体的 类.

在你的情况下,你有两种方式:

public class Order
{
[Key]
   public int Id { get; set;}
[ForeignKey]
   public int UserId CreatedBy { get; set; }
}

这样您就可以将UserId保存到Db中并重复使用。首选这种方式。

另一种方式:

public class Order
{
   [Key]
   public int Id { get; set;}
   [NotMapped]
   public IUser CreatedBy { get; set; }
}

但是只要内存中存在 Order 实例,就可以使用这种方式。