C# 实体框架数据库映射

C# 实体框架数据库映射,c#,entity-framework,.net-core,C#,Entity Framework,.net Core,我正试图将此外键映射到requisions\u sections类,但我遇到了此错误实体类型“requisions\u sections”需要定义主键。如果要使用无键实体类型,请在“OnModelCreating”中调用“HasNoKey”。有关无键实体类型的更多信息,请参见 我为此创建了单独的类 在mysql中,JobIDFK和section都应该是主键,我不知道如何在SQL server中实现这一点,而且这是一对多的关系,一个jobID有多个section 感谢您的帮助。此错误是由于模型“请

我正试图将此外键映射到requisions\u sections类,但我遇到了此错误
实体类型“requisions\u sections”需要定义主键。如果要使用无键实体类型,请在“OnModelCreating”中调用“HasNoKey”。有关无键实体类型的更多信息,请参见

我为此创建了单独的类

在mysql中,JobIDFK和section都应该是主键,我不知道如何在SQL server中实现这一点,而且这是一对多的关系,一个jobID有多个section


感谢您的帮助。

此错误是由于模型“请购单”部分未定义任何键属性造成的。但是,如果您希望跟踪更改,建议为模型定义键。

如果您的模型不需要任何键,则可以使用[keyless]数据注释或.HasNoKey()方法调用

public class Requisitions
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int JobID { get; set; }
        [Required]
        public string JobNumber { get; set; }
        [Required]
        public string Username { get; set; }
        [Required]
        public string Department { get; set; }
        [Required]
        public string Details { get; set; }
        [Required]
        public DateTime DateOfComplaint { get; set; }
        [Required]
        public string Period { get; set; }
        [Required]
        public DateTime EndDate { get; set; }
    }

public class Requisitions_Sections
    {
        public Requisitions Requisitions { get; set; }
        [ForeignKey("Requisitions")]
        public int JobIDFK { get; set; }
        [Required]
        public string Section { get; set; }
    }
下面是使用无键实体类型的一些特征

  • 从未跟踪DbContext中的更改,因此从未在数据库中插入、更新或删除
  • 传统永远不会发现
  • 仅支持导航映射功能的子集
  • 他们可能永远不会成为一段关系的主要目的
  • 它们可能没有指向所属实体的导航
  • 它们只能包含指向常规实体的引用导航属性
  • 实体不能包含无键实体类型的导航属性

  • 错误消息非常清楚,您的类
    requisions\u部分必须有主键,除非您希望它显式没有主键,在这种情况下,您需要调用
    modelBuilder.Entity().HasNoKey()
    在您的
    DbContext
    OnModelCreating
    方法中,正如@MindSwipe已经提到的,您的
    请购单部分的主键是什么?接下来,我建议将
    [ForeignKey(“requisions”)]
    更改为
    [ForeignKey(nameof(requisions))]
    似乎您的类与EF核心一对一关系约定不匹配。请看一下@MindSwipe问题edited@DeMaki编辑的问题是,如果我不使用密钥,这是一对多关系
    [KeyLess]
    public class Requisitions_Sections
        {
            public Requisitions Requisitions { get; set; }
            [ForeignKey("Requisitions")]
            public int JobIDFK { get; set; }
            [Required]
            public string Section { get; set; }
        }