C# 需要[Key]属性的非实体类

C# 需要[Key]属性的非实体类,c#,entity-framework-6,C#,Entity Framework 6,我发现EntityType“ScheduleNote”没有定义键。定义此EntityType的键。用于与实体框架无关的POCO。EF是否要求我为项目中的每个类定义一个[Key],无论它是否处理数据库 更新: 以下是ScheduleNote代码: using System; namespace Domain { public class ScheduleNote { public string NoteId { get; set; } public

我发现EntityType“ScheduleNote”没有定义键。定义此EntityType的键。用于与实体框架无关的POCO。EF是否要求我为项目中的每个类定义一个[Key],无论它是否处理数据库

更新:

以下是ScheduleNote代码:

using System;

namespace Domain
{
    public class ScheduleNote
    {
        public string NoteId { get; set; }
        public NoteTypeEnum Type { get; set; }
        public string TypeFK { get; set; }
        public string UserId { get; set; }
        public string AuthorName { get; set; }
        public string Subject { get; set; }
        public string Message { get; set; }
        public DateTime? StartDate { get; set; }
        public DateTime? EndDate { get; set; }
        public DateTime InsertDate { get; set; }
        public DateTime? DeleteDate { get; set; }
        public bool IsPublic { get; set; }
        public bool IsModified { get; set; }
        public bool IsDeleted { get; set; }
    }

    public enum NoteTypeEnum
    {
        INSIGHT_EVENT = 0,
        INSIGHT_SERIES = 1,
        INSIGHT_TEAM = 2
    }
}
因此,当应用程序启动(ASP.NET Web API)时,第一次使用EF调用数据库(与此类无关)时会出现“no key defined”错误。该类未在my DbContext或任何地方定义。它只是存在于项目中,EF不喜欢它没有[Key]属性


我可以添加属性并继续,但这并不能解释我为什么需要这样做。我的理解是,新代码或旧代码不必随着EF的引入而改变。

因为您以某种方式将该类用作相关实体,所以需要在属性上使用
[NotMapped]
属性,让EF知道您不希望它自动连接属性。或者干脆删除它作为参考。

不,它绝对不会。请发布一些代码,并在代码中指出出现此错误的位置。@PraveenPaulose,我添加了一些代码。您是否有任何类引用了
ScheduleNote
?若要进一步调试它,是否可以添加一个键,然后检查是否在数据库中创建了表ScheduleNote。如果是这样的话,那么它是从您的一个实体类引用的,并导致了问题。@PraveenPaulose,我将NoteId更改为ScheduleNoteId,错误消失了。对我来说,这意味着EF仍然将该类视为其职责范围内的实体,因为现在有一个属性与该类的“关键”要求相匹配。