【问题标题】:Model generation error模型生成错误
【发布时间】:2016-10-03 12:55:44
【问题描述】:

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:             {

谜语模型:

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。所以他们应该匹配。我在这里错过了什么?

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    您的属性[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; }
      ...
    }
    

    【讨论】:

      【解决方案2】:

      似乎只是一个错字阻碍了您。您正在指定 RiddleId 字段的类型应为具有 Column 属性的 datetime2 类型。

      [Column(TypeName = "datetime2")]
      public int RiddleId { get; set; }
      

      应该是-

      public int RiddleId { get; set; }
      [Column(TypeName = "datetime2")]
      public DateTime CreationDate { get; set; }
      

      【讨论】:

        猜你喜欢
        • 2012-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多