OnModelCreatingでベースを呼び出した後の最初の行でエラーが発生するのはなぜですか?このエラーが発生するコメント行:一方のエンドからリレーションシップを定義しても、他方のエンドから定義するとエラーが発生します
式 'x => value(Blog.Services.Db).ContentItems'は有効なプロパティ式ではありません。式はプロパティへのアクセスを表す必要があります: 't => t.MyProperty'。 パラメータ名:propertyAccessExpression
protected override void OnModelCreating(ModelBuilder mb)
{
base.OnModelCreating(mb);
mb.Entity<ContentGroup>().HasMany(x => ContentItems).WithOne(x => x.ContentGroup).HasForeignKey(x => x.ContentGroupID); // same effect as following line but throws an error
//mb.Entity<ContentItem>().HasOne(x => x.ContentGroup).WithMany(x => x.ContentItems).HasForeignKey(x => x.ContentGroupID); // same effect as previous line but works
}
ContentGroup:
public class ContentGroup
{
public int ID { get; set; }
public int SiteID { get; set; }
public string Description { get; set; }
public int Sequence { get; set; }
public bool Active { get; set; }
public virtual Site Site { get; set; }
public virtual ICollection<ContentItem> ContentItems { get; set; }
}
のContentItem:
public class ContentItem
{
public int ID { get; set; }
public string ContentType { get; set; }
public int ContentGroupID { get; set; }
public DateTime? PublishDate { get; set; }
public DateTime? LastModifyDate { get; set; }
public string ChangeFrequency { get; set; }
public decimal? Priority { get; set; }
public bool Active { get; set; }
public string Slug { get; set; }
public string Title { get; set; }
public string MenuText { get; set; }
public string URI { get; set; }
public string Abstract { get; set; }
public string Icon { get; set; }
public string Tags { get; set; }
public bool AllowComments { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
public virtual ContentGroup ContentGroup { get; set; }
public virtual ICollection<MenuContentItem> MenuContentItems { get; set; }
}
ガボット、あなたの答えはありがたいですが、残念ながらそれは正しくありません。 HasForeignKeyメソッドは、ContentItemをパラメータとして取ります。それがContentGroupを取った場合、ビルドさえできません。 – Sam
@Sam、あなたの投稿の例外メッセージを考慮して私の答えを更新しました。 – Gabor
ありがとうGabor !!!! – Sam