对于与实体框架无关的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的引入,不需要改变新的或遗留的代码。
答案 0 :(得分:1)
由于您以某种方式将该类用作相关实体,因此您需要使用该属性上的[NotMapped]
属性让EF知道您不希望它自动连线财产。或者只是删除它作为参考。