我在使用数据注释时遗漏了一些东西。
这是我的第一堂课
[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;像上面那样。
我做错了什么?
答案 0 :(得分:1)
该问题与数据注释无关,这在您的模型中似乎是正确的。
正如评论中所提到的,异常是由尝试将Include
方法与string
“'PriceFeed__History'一起使用的代码引起的 - 您似乎认为应该指定相关实体类型,但实际上您需要指定导航属性名称,在您的情况下是“历史记录”。