Как сопоставить следующие отношения с помощью fluent api
Привет, ребята, можно ли сопоставить сущность Image с таблицей Post и таблицей черновиков, где свойство Image "TypeId" становится внешним ключом либо к таблице Post, либо к таблице черновиков.
В принципе, пост содержит много изображений, а черновик-много изображений. Я хотел бы использовать "TypeId" в качестве внешнего ключа, чтобы я мог запросить его, используя следующий сценарий:
"Выберите * из изображений, где TypeId = Post.Id и тип='Post'" или
"Выберите * из изображений, где TypeId = Черновик.Id и тип='Черновик'"
Также обратите внимание, что я использую EntityFrameworkCore!
public class Post { public string Id { get; private set; } public string Content { get; set; } public string UserId { get; set; } public DateTime Created { get; set; } public DateTime Edited { get; set; } public List<Image> Images; } public class Draft { public string IdentityGuid { get; private set; } public string Id { get; set; } public string Content { get; set; } public string UserId { get; set; } public string Title { get; set; } public DateTime Created { get; set; } public DateTime Edited { get; set; } public List<Image> Images; } public class Image { public string UserId { get; set; } public string Name { get; set; } public string Type { get; set; } public int TypeId { get; set; } public string Description { get; set; } public string Content_Type { get; set; } public string Filename { get; set; } public string Url { get; set; } public long Size { get; set; } public DateTime Created { get; set; } public DateTime Edited { get; set; } }
Что я уже пробовал:
public void Configure(EntityTypeBuilder<Draft> draftConfiguration) { draftConfiguration.HasMany(b => b.Images) .WithOne() .HasForeignKey("TypeId") .OnDelete(DeleteBehavior.Cascade); } public void Configure(EntityTypeBuilder<Post> postConfiguration) { draftConfiguration.HasMany(b => b.Images) .WithOne() .HasForeignKey("TypeId") .OnDelete(DeleteBehavior.Cascade); }