模型生成错误

时间:2016-10-03 12:55:45

标签: c# entity-framework

  

Riddle_Question ::参照约束的从属角色中的所有属性的类型必须与主体角色中的相应属性类型相同。财产的类型' RiddleId'关于实体'问题'不符合财产的类型' Id'实体'里德尔'在参考约束' Question_Riddle'。

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息:System.Data.Entity.ModelConfiguration.ModelValidationException:在模型生成期间检测到一个或多个验证错误:

     

Riddle_Question ::参照约束的从属角色中的所有属性的类型必须与主体角色中的相应属性类型相同。财产的类型' RiddleId'关于实体'问题'不符合财产的类型' Id'实体'里德尔'在参考约束' Question_Riddle'。

     

来源错误:

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; }
    }

它说

  

财产的类型&#39; RiddleId&#39;关于实体&#39;问题&#39;不符合财产的类型&#39; Id&#39;实体&#39;里德尔&#39;在参考约束&#39; Question_Riddle&#39;。

但他们都是int。所以他们应该匹配。我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

好像它只是一个错误阻止你。你指的是RiddleId字段应该是datetime2类型和Column属性。

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

应该是 -

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