数据注释不会创建一对多对象引用

时间:2016-12-31 15:14:17

标签: c# entity-framework-6 ef-migrations

我在使用数据注释时遗漏了一些东西。

这是我的第一堂课

[Table("PriceFeed")]
public class PriceFeed : History
{
    public PriceFeed()
    {
        this.Votes = new List<PriceVote>();
        this.History = new List<PriceFeed__History>();
    }

    [Key]
    public long Id { get; set; }

    [ForeignKey("Store")]
    public long Store_Id { get; set; }

    [ForeignKey("Item")]
    public long Item_Id { get; set; }

    [Required]
    public decimal Price { get; set; }

    public Store Store { get; set; }

    public Item Item { get; set; }

    public virtual ICollection<PriceFeed__History> History { get; set; }

}

这是我的第二堂课

[Table("PriceFeed__History")]
public class PriceFeed__History : History
{

    [Key]
    public long Id { get; set; }

    [ForeignKey("PriceFeed")]
    public long PriceFeed_Id { get; set; }

    [Required]
    public decimal Price { get; set; }

    public virtual PriceFeed PriceFeed { get; set; }

}

当我运行add-migration时,它会正确创建数据库,但是当我尝试访问PriceFeed.History时,它会给我一个错误

{"Message":"An error has occurred.","ExceptionMessage":"A specified Include path is not valid. The EntityType 'Verdinhas.Web.Contexts.PriceFeed' does not declare a navigation property with the name 'PriceFeed__History'."

我一直使用API​​ Fluent并自己输入像

这样的代码
.Entity<Student>()
                .HasRequired<Standard>(s => s.Standard)
                .WithMany(s => s.Students)
                .HasForeignKey(s => s.StdId);

但现在我正在使用数据注释,当我生成迁移时,它不会创建&#34; withmany&#34;像上面那样。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

该问题与数据注释无关,这在您的模型中似乎是正确的。

正如评论中所提到的,异常是由尝试将Include方法与string“'PriceFeed__History'一起使用的代码引起的 - 您似乎认为应该指定相关实体类型,但实际上您需要指定导航属性名称,在您的情况下是“历史记录”。