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

标签 c# entity-framework-6

我收到 EntityType 'ScheduleNote' has no key defined。定义此 EntityType 的键。 用于与 Entity Framework 无关的 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(与此类无关)调用数据库时会出现“未定义键”错误。该类未在我的 DbContext 或任何地方定义。它只存在于项目中,EF 不喜欢它没有 [Key] 属性。

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

最佳答案

由于您以某种方式将该类用作相关实体,因此您需要使用该属性的 [NotMapped] 属性让 EF 知道您不希望它自动-连线属性(property)。或者干脆将其删除作为引用。

关于c# - 需要 [Key] 属性的非实体类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29546939/

相关文章:

c# - EF 6.2 的多个复合索引

c# - 为什么 List<T>.IndexOf(T) 在存在的对象上返回 -1?

c# - 引用表未通过 Entity Framework 5.0 出现在我的模型中

c# - EF急切加载导航属性问题

c# - 带有 SQL Server 数据库和 Entity Framework 错误的 Windows 应用程序部署

c# - 当 EF 6 使用开箱即用的缓存时,我们是否需要外部缓存机制?

c# - 克隆/复制现有的游戏对象及其子对象

c# - 如何移动 3D 射弹 Unity

c# - 通用列表和 IComparable 排序错误 : Can not convert lambda expression

asp.net-mvc-4 - MiniProfiler 与 EntityFramework 6 代码优先