【问题标题】:i want add foreign key but i have error when adding我想添加外键,但添加时出错
【发布时间】:2020-04-25 07:46:49
【问题描述】:

我需要在两个班级赞助商和访客之间添加一对一的关系 但是当运行代码时我有错误说是: “adminSection.Models.Sponsor”类型的属性“Sponsor_ID”上的 ForeignKeyAttribute 无效。在依赖类型“adminSection.Models.Sponsor”上找不到导航属性“Visitor”。 Name 值应该是有效的导航属性名称。

我的班级: 赞助商

public partial class Sponsor
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
   // [ForeignKey("Visitor")]
    public int Sponsor_ID { get; set; }
    /// <summary>
    /// Sponsor_ID att section
    /// success
    /// </summary>

    [Required(ErrorMessage ="you must provide full name")]
    [Display(Name ="Full Name")]
    public string Sponsor_FullName { get; set; }
    /// <summary>
    /// Sponsor_FullName section
    /// done
    /// </summary>

    [Required(ErrorMessage ="you Must Provide Email Address")]
    [Display(Name ="Email Address")]
    [DataType(DataType.EmailAddress)]
    public string Sponosr_Email { get; set; }
    /// <summary>
    /// Sponosr_Email
    /// done
    /// </summary>

    [Required(ErrorMessage ="you must provide password")]
    [Display(Name ="Password")]
    [DataType(DataType.Password)]
    public string Sopnsor_Password { get; set; }
    /// <summary>
    /// Sopnsor_Password section
    /// done
    /// </summary>

    [Required(ErrorMessage ="You must provide your Image")]
    [Display(Name ="Upload Image")]
    public string Sponsor_Image_Path { get; set; }
    /// <summary>
    /// Sponsor_Image_Path section
    /// done
    /// </summary>
    /// 

    [Required(ErrorMessage = "You must provied phone number")]
    [Display(Name = "Phone number")]
    [DataType(DataType.PhoneNumber)]
    public string Sponsor_Phone { get; set; }
    /// <summary>
    /// admin phone number att here
    /// </summary>
    /// 

        [Required(ErrorMessage ="you must provide Sponsor location")]
        [Display(Name ="Location")]

    public string  Sponsor_Location { get; set; }

    public string User_Type { get; set; }


    //public int visitor_id { get; set; }

    public virtual Visitor visitor { get; set; }

    //public int Minisry_Id { get; set; }
    //public virtual Minsitry ministry { get; set; }

}

和访问者类:

 public partial class Visitor
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]

    public int Visitro_ID { get; set; }
    /// <summary>
    /// ID Att Section
    /// Section success
    /// </summary>

    [Required(ErrorMessage ="you must provide your full name")]
    [Display(Name ="Full Name")]
    public string Visitor_FullName { get; set; }
    /// <summary>
    /// Full Name Att Section
    /// Section success
    /// </summary>
    /// 

    [Required(ErrorMessage ="You must provide your Email")]
    [Display(Name ="Email Address")]
    [DataType(DataType.EmailAddress)]
    public string Visitor_Email { get; set; }
    /// <summary>
    /// Email Address Att Section
    /// section success
    /// </summary>
    /// 
    [Required(ErrorMessage ="you must provide password")]
    [Display(Name ="Password")]
    [DataType(DataType.Password)]
    public string  Visitor_Password { get; set; }
    /// <summary>
    /// Password Att Section
    /// section success
    /// </summary>
    /// 
    [Required(ErrorMessage ="you must provide phone number")]
    [Display(Name ="Phone Number")]
    [DataType(DataType.PhoneNumber)]
    public int Visitor_Phone { get; set; }
    /// <summary>
    /// Phone Number Att Section
    /// Section success
    /// </summary>

    [Required(ErrorMessage ="you must upload your Image")]
    [Display(Name ="upload Image")]
    public string  Visitor_Image_Path { get; set; }
    /// <summary>
    /// Image Path Att Section
    /// Section success
    /// </summary>

    public string User_Type { get; set; }
    /// <summary>
    /// User type Section
    /// Section success
    /// </summary>
    /// 

    public virtual ICollection<volunteer> volunterr { get; set; }
    /// <summary>
    /// Visior with volunteer has relation one to many
    /// section success
    /// sectioin success
    /// </summary>
    /// 



    public int Sponsor_ID { get; set; }

    public virtual Sponsor sponsor { get; set; }
    //public int Sponsor_ID { get; set; }
    ////[ForeignKey("Visitor")]
    //public virtual Sponsor sponsor { get; set; }





}

我的上下文数据库:

 public DbSet<Visitor> visitor { get; set; }
        /// <summary>
        /// Mapping with Database
        /// </summary>
        /// 

      public DbSet<Sponsor> sponsor { get; set; }
        /// <summary>
        /// Mapping with Database
        /// </summary>
        ///
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Visitor>()
               .HasRequired(s => s.sponsor)
               .WithOptional(ad => ad.visitor);

        }

【问题讨论】:

    标签: asp.net asp.net-mvc model-view-controller


    【解决方案1】:

    你好,你忘了在 Sponsor_ID 上添加 [ForeignKey]

    不妨试试这个

        [ForeignKey("sponsor")]
        public int Sponsor_ID { get; set; }
    
        public virtual Sponsor sponsor { get; set; }
    

    我看了这个文档https://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx

    GL

    编辑:删除了一个空格

    【讨论】:

      猜你喜欢
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      相关资源
      最近更新 更多