Mayur A Muley
Mayur A Muley

Reputation: 61

Defining a Navigation property in EF 5, Code first migrations

See my models

    public class UsersContext : DbContext
        {
            public UsersContext()
                : base("DefaultConnection")
            {
            }

            public DbSet<UserProfile> UserProfiles { get; set; }
            public DbSet<Files> Files { get; set; }
        }

        [Table("UserProfile")]
        public class UserProfile
        {
            [Key]
            [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
            public int UserId { get; set; }
            public string UserName { get; set; }
        }

    [Table("Files")]
    public class Files
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        [Display(Name = "FileID")]
        public int FileID { get; set; }

        [Required]
        [ForeignKey("UserId")] // this is what I have tried
        [Display(Name = "For User")]
        public int UserId { get; set; }

        [Display(Name = "Description")]
        public string Desc { get; set; }

        [Required]
        [Display(Name = "Document Upload")]
        public string DocumentPath { get; set; }
    }

What I want is to define a foreign key for user id in files table. How M I supposed to do that. I tried using a [ForeignKey] attribute. But it is giving me this error while executing update-database -verbose in PCM.

Error - The navigation property 'UserId' is not a declared property on type 'Files'. Verify that it has not been explicitly excluded from the model and that it is a valid navigation property.

Upvotes: 1

Views: 64

Answers (1)

yohannist
yohannist

Reputation: 4204

[Table("Files")]
public class Files
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    [Display(Name = "FileID")]
    public int FileID { get; set; }

    [Required]

    [Display(Name = "For User")]
    public int UserId { get; set; }


    [Display(Name = "Description")]
    public string Desc { get; set; }

    [Required]
    [Display(Name = "Document Upload")]
    public string DocumentPath { get; set; }

    [ForeignKey("UserId")] // this is what I have tried
    public virtual UserProfile UserProfile { get; set; }
}

Upvotes: 2

Related Questions