我收到 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/