模型生成错误
本文关键字:错误 模型 | 更新日期: 2023-09-27 18:11:20
Riddle_Question::引用约束的Dependent Role中所有属性的类型必须与Principal Role中相应的属性类型相同。实体"Question"的属性"RiddleId"的类型与引用约束"Question_Riddle"中实体"Riddle"的属性类型"Id"不匹配。
描述:在执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误以及错误在代码中的来源的更多信息。
异常详细信息:System.Data.Entity.ModelConfiguration.ModelValidationException:在模型生成过程中检测到一个或多个验证错误:
Riddle_Question::引用约束的Dependent Role中所有属性的类型必须与Principal Role中相应的属性类型相同。实体"Question"的属性"RiddleId"的类型与引用约束"Question_Riddle"中实体"Riddle"的属性类型"Id"不匹配。
来源错误:
Line 76: // This doesn't count login failures towards account lockout
Line 77: // To enable password failures to trigger account lockout, change to shouldLockout: true
Line 78: var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
Line 79: switch (result)
Line 80: {
Riddle模型:
public class Riddle
{
public int Id { get; set; }
public string Name { get; set; }
[MaxLength(200)]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
public virtual List<Review> Reviews { get; set; }
public virtual ApplicationUser User { get; set; }
public virtual List<Question> Questions { get; set; }
[Column(TypeName = "datetime2")]
public DateTime CreationDate { get; set; }
}
问题模型:
public class Question
{
public int Id { get; set; }
[MaxLength(2000)]
[DataType(DataType.MultilineText)]
public string Body { get; set; }
public string Answer { get; set; }
public Riddle Riddle { get; set; }
[Column(TypeName = "datetime2")]
public int RiddleId { get; set; }
public DateTime CreationDate { get; set; }
public int QuestionNumber { get; set; }
}
上面写着
实体"Question"的属性"RiddleId"的类型与引用约束"Question_Riddle"中实体"Riddle"的属性类型"Id"不匹配。
但他们都是int。所以他们应该匹配。我在这里错过了什么?
属性[Column(TypeName = "datetime2")]
覆盖了错误的属性。它应该在CreationDate
而不是RiddleId
:上结束
public class Question {
...
public Riddle Riddle { get; set; }
public int RiddleId { get; set; }
[Column(TypeName = "datetime2")]
public DateTime CreationDate { get; set; }
...
}
这似乎只是一个拼写错误。您正在指定RiddleId字段的类型应为datetime2,并具有Column属性。
[Column(TypeName = "datetime2")]
public int RiddleId { get; set; }
应该是-
public int RiddleId { get; set; }
[Column(TypeName = "datetime2")]
public DateTime CreationDate { get; set; }