【问题标题】:The ForeignKeyAttribute on property "[Model name]" on type "[Project name]" is not valid类型“[项目名称]”的属性“[模型名称]”上的 ForeignKeyAttribute 无效
【发布时间】:2020-06-01 09:33:30
【问题描述】:

所以我尝试按照this 教程添加外键。但是现在我得到一个错误,我已经寻找了一个 anwser 但找不到任何一个。这些是我的模型类

电影课

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;

namespace MovieExampleAppDotNetCore.Models
{
    [Table("Movie")]
    public class Movie
    {   
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int MovieId { get; set; }
        public string Name { get; set; }

        [Column(TypeName = "datetime2")]
        public DateTime? DateCreated { get; set; }

        public int? CustomerId { get; set; }
        [ForeignKey("Customer")]
        public Customer customer { get; set; }
    }
}

客户类别

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;

namespace MovieExampleAppDotNetCore.Models
{
    [Table("Customer")]
    public class Customer
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int CustomerId { get; set; }
        public string Name { get; set; }
        public string LastName { get; set; }
        public bool IsCreated { get; set; }
        public int MaxMovies { get; set; }

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

        [Column(TypeName = "datetime2")]
        public DateTime? LastEdited { get; set; }

        public ICollection<Movie> BorrowingMovies { get; set; }
    }
}

我希望有人可以帮助我解决我的问题。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-core entity-framework-core


    【解决方案1】:

    你必须拥有带有 pascal-case 的属性名称:

    public Customer Customer { get; set; }
    

    此外,在这种情况下不需要使用数据注释。 此外,CustomerId 的类型在MovieCustomer 中是不同的。它在Movie 中不能为空。您的外键必须这样定义:

    public int CustomerId { get; set; }
    

    【讨论】:

    • 这对我不起作用我仍然得到同样的错误。
    • 而且您必须在客户类中定义外键的名称:因为属性的名称与其类型不同。 [ForeignKey("CustomerId")] public ICollection BorrowingMovies { get;放; }
    • 这似乎是我的数据库的问题,因为即使我删除了列表和外键,我也无法更新我的数据库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 2018-01-18
    • 2019-12-10
    • 2021-02-02
    相关资源
    最近更新 更多