Я пытаюсь научиться работать с ядром Entity Framework, но не могу получить следующий код для работы. Мне нужна база данных с изображением, которое имеет несколько категорий (для фильтрации).Несколько категорий на изображение (сначала код)
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; }
}
Add-Миграции генерировать следующий текст:
PM> Add-Migration InitialMigration -context ImageContext
System.InvalidOperationException: The entity type
'quandar_eu.Models.Images.ImageCategory' requires a primary key to be defined.
Если вы только хотите присоединиться к двум таблицам, вам не нужен правильный ключ? Я попытался найти решение 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