0
私はEntity Frameworkコアで作業することを学んでいますが、以下のコードを実行することはできません。複数のカテゴリ(フィルタリング用)を持つImageを持つデータベースが必要です。イメージごとに複数のカテゴリ(最初のコード)
public class ImageCategory
{
public string CategoryId { get; set; }
public int ImageId { get; set; }
//*************
[ForeignKey("CategoryId")]
public virtual Category Category { get; set; }
//*************
[ForeignKey("ImageId")]
public virtual Image Image { get; set; }
}
......
public class Category
{
[Key]
[Display(Name="Category name")]
public string Id { get; set; }
}
.....
public class Image
{
[Key]
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
[FileExtensions(Extensions = "jpg,png,gif,jpeg,bmp,svg")]
[DataType(DataType.ImageUrl)]
public string ThumbnailUrl { get; set; }
[Required]
[FileExtensions(Extensions = "jpg,png,gif,jpeg,bmp,svg")]
[DataType(DataType.ImageUrl)]
public string ImageUrl { get; set; }
[FileExtensions(Extensions = "jpg,png,gif,jpeg,bmp,svg")]
[DataType(DataType.ImageUrl)]
public string ImageUrlFullRes { get; set; }
[Required]
public string AltText { get; set; }
public int NumberOfViews { get; set; }
[Required]
[DataType(DataType.Date)]
public DateTime UploadDate { get; set; }
//*************
[Required]
public virtual ICollection<ImageCategory> Categories { get; set; }
}
アドインの移行を次のテキストを生成します。ちょうどあなたの場合は
PM> Add-Migration InitialMigration -context ImageContext
System.InvalidOperationException: The entity type
'quandar_eu.Models.Images.ImageCategory' requires a primary key to be defined.
をあなたが主キーを必要としない2つのテーブルに参加したいですか?私はGoogleに解決策を試みましたが、それを見つけることができませんでした。
私はずっと多くのことを学びたいので、良いチュートリアル/電子書籍へのリンクは大いに役立ちます。
Ivan Stoevに感謝します。これはすべての作業をするためのコードの最後の部分です。
public class ImageContext : DbContext
{
public ImageContext(DbContextOptions<ImageContext> options) : base(options)
{
}
public DbSet<Image> Image { get; set; }
public DbSet<Category> Category { get; set; }
public DbSet<ImageCategory> ImageCategory { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<ImageCategory>().HasKey(e => new { e.CategoryId, e.ImageId });
}
}
EntityFrameworkコアまたはEntityFramework 6?コアの場合はタグを調整してください。エンティティフレームワークタグは古いEFフレームワークのタグです+ – Tseng