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

时间:2015-04-09 19:09:49

标签: c# entity-framework-6

对于与实体框架无关的POCO,我得到EntityType 'ScheduleNote' has no key defined. Define the key for this EntityType.。 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(与此类无关)首次调用数据库时出现“无键定义”错误。该类未在我的DbContext或任何地方定义。它只存在于项目中,EF不喜欢它没有[Key]属性。

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

1 个答案:

答案 0 :(得分:1)

由于您以某种方式将该类用作相关实体,因此您需要使用该属性上的[NotMapped]属性让EF知道您不希望它自动连线财产。或者只是删除它作为参考。