У меня есть 2 таблицы Categories
и Images
категории является самостоятельной ссылкой с ParentId
, как Nullable внешнего ключLINQ самостоятельно refenced фильтр таблицы отношение
Код первых классов
public class Category {
public int Id { get; set; }
public string Name{ get; set; }
public int? ParentId { get; set; }
public bool IsDeleted { get; set; }
public byte[] Timestamp { get; set; }
public virtual Category Parent { get; set; }
public virtual ICollection<Category> Parents { get; set; }
public virtual ICollection<Image> Images { get; set; }
}
Public class Image {
public int Id { get; set; }
public int? CategoryId { get; set; }
public string Source { get; set; }
public string Description { get; set; }
public bool IsDeleted { get; set; }
public byte[] Timestamp { get; set; }
// Foreign keys
public virtual Category Category { get; set; }
}
public class CategoryMap : EntityTypeConfiguration<Category>
{
public CategoryMap()
{
// Primary Key
HasKey(t => t.Id);
// Properties
Property(t => t.Name).IsRequired().HasMaxLength(250);
Property(t => t.Timestamp).IsRequired().IsFixedLength().HasMaxLength(8).IsRowVersion();
// Table & Column Mappings
ToTable("Category");
Property(t => t.Id).HasColumnName("Id");
Property(t => t.ParentId).HasColumnName("ParentId");
Property(t => t.Name).HasColumnName("Category");
Property(t => t.IsDeleted).HasColumnName("IsDeleted");
Property(t => t.Timestamp).HasColumnName("Timestamp");
// Relationships
HasOptional(t => t.Parent).WithMany(t => t.Parents).HasForeignKey(d => d.ParentId).WillCascadeOnDelete(false);
#endregion
}
public class ProfileImageMap : EntityTypeConfiguration<ProfileImage> {
public ProfileImageMap() {
// Primary Key
HasKey(t => t.Id);
// Properties
Property(t => t.Source).IsRequired().HasMaxLength(255);
Property(t => t.Description).HasMaxLength(255);
Property(t => t.Timestamp).IsRequired().IsFixedLength().HasMaxLength(8).IsRowVersion();
// Table & Column Mappings
ToTable("Images");
Property(t => t.Id).HasColumnName("Id");
Property(t => t.CategoryId).HasColumnName("CategoryId ");
Property(t => t.Source).HasColumnName("Source");
Property(t => t.Description).HasColumnName("Description");
Property(t => t.IsDeleted).HasColumnName("IsDeleted");
Property(t => t.Timestamp).HasColumnName("Timestamp");
// Relationships
HasOptional(t => t.Category).WithMany(t => t.Images).HasForeignKey(d => d.CategoryId);
}
#endregion
}
** Контекст **
public DbSet<Category> Categories { get; set; }
public DbSet<Image> Images { get; set; }
вопрос, как я могу построить заявление LINQ, чтобы вернуть категорию, основанную на Id с родителями Категории со всеми изображениями, за исключением изображений, помеченных как IsDeleted = true
возможно ли это сделать в LINQ
или LinqKit
вы пробовали что-нибудь еще? – DavidG
Да, я пробовал 'Linq' и' LinqKit', но я не мог отфильтровать изображения. Я думаю, что будет проще просто создать «хранимый прокумер» в SQL Server. – Moes