Gimballock
Gimballock

Reputation: 477

Model generation error

Riddle_Question: : The types of all properties in the Dependent Role of a referential constraint must be the same as the corresponding property types in the Principal Role. The type of property 'RiddleId' on entity 'Question' does not match the type of property 'Id' on entity 'Riddle' in the referential constraint 'Question_Riddle'.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.Entity.ModelConfiguration.ModelValidationException: One or more validation errors were detected during model generation:

Riddle_Question: : The types of all properties in the Dependent Role of a referential constraint must be the same as the corresponding property types in the Principal Role. The type of property 'RiddleId' on entity 'Question' does not match the type of property 'Id' on entity 'Riddle' in the referential constraint 'Question_Riddle'.

Source Error:

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

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

Question Model:

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

It says

The type of property 'RiddleId' on entity 'Question' does not match the type of property 'Id' on entity 'Riddle' in the referential constraint 'Question_Riddle'.

But they are both int. So they should match. What am i missing here?

Upvotes: 1

Views: 655

Answers (2)

jwhite
jwhite

Reputation: 26

Seems like it's just a typo holding you back.You are specifying that the RiddleId field should be of type datetime2 with the Column attribute.

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

should probably be -

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

Upvotes: 1

Igor
Igor

Reputation: 62213

You have the attribute [Column(TypeName = "datetime2")] over the wrong property. It should be over over CreationDate and not RiddleId:

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

Upvotes: 2

Related Questions