我已经对这个错误进行了广泛的研究:
EntityType 'Todo' has no key defined. Define the key for this EntityType.
此处和其他网站:
等...
但是,我没有和这些问题一样的问题。他们遇到的问题是他们未能在模型中识别出主键,我没有。见下文:
型号:
namespace TaskMaster.Library.Models
{
public enum Priority
{
Highest = 0,
High = 1,
Medium = 2,
Low = 3,
Lowest = 4
}
public class Todo
{
[Key]
public uint Id { get; set; }
public ITask Task { get; set; }
public bool isDone { get; set; }
public bool isVisible { get; set; }
public Priority Priority { get; set; }
}
}
的DbContext:
namespace TaskMaster.Library.Models
{
class TodoContext : DbContext
{
public TodoContext()
:base ("DefaultConnection")
{
this.Configuration.LazyLoadingEnabled = false;
}
public virtual DbSet<Todo> Todos { get; set; }
}
}
我尝试了什么(除了阅读文章):
然而,EF正在清楚地识别错误消息本身所指出的这个模型;如果不是,则不会在错误中显示模型名称。
我唯一想知道的是,他可以定义或者有一个uint id与它有关吗?虽然它不在课堂上,所以我不知道怎么做。谢谢。我使用EF 6.1.3。
答案 0 :(得分:1)
实体框架不支持uint类型的属性(键或其他)。试试这个实验:
将您的Todo.Id属性更改为int(或long)类型。它会正常工作。
添加uint类型的非键属性。它仍将成功构建您的迁移,但它将完全忽略uint属性,就像您已明确排除它一样。
有人建议在Support unisgned integer添加对uint的支持,EF团队表示它将在EF7中得到支持。