Tôi đang cố gắng liệt kê một số loại (mối quan hệ con mẹ) và tôi có lệnh sau để chỉ liệt kê danh mục mẹEF Mã đầu tiên so sánh các giá trị null tạo truy vấn lạ
context.Categories.Where(c => c.ParentId == null)
Nhưng truy vấn sql tạo ra bởi EF không trả lại bất cứ điều gì truy vấn
sql tạo ra bởi EF
SELECT
CAST(NULL AS int) AS [C1],
CAST(NULL AS varchar(1)) AS [C2],
CAST(NULL AS bit) AS [C3],
CAST(NULL AS int) AS [C4]
FROM (SELECT 1 AS X) AS [SingleRowTable1]
WHERE 1 = 0
loại mô hình
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
public virtual IList<Category> SubCategories { get; set; }
internal int? ParentId { get; set; }
public virtual Category Parent { get; set; }
public override bool Equals(object obj)
{
var categoryToCompare = obj as Category;
if (categoryToCompare == null) return false;
return categoryToCompare.Id == Id;
}
public override int GetHashCode()
{
return Id.GetHashCode();
}
}
Mapping
public class CategoryConfiguration : EntityTypeConfiguration<Category>
{
public CategoryConfiguration()
{
ToTable("tbl_category");
HasKey(c => c.Id);
Property(c => c.Id).HasColumnName("cd_category");
Property(c => c.Name).HasColumnName("ds_category");
Property(c => c.IsActive).HasColumnName("fl_active");
Property(c => c.ParentId).HasColumnName("cd_base_category").IsOptional();
HasMany(c => c.SubCategories).WithRequired(c => c.Parent).HasForeignKey(c => c.ParentId);
}
}
@caerolus có EF tạo mà –
Sử dụng '(c =>! C.ParentId.HasValue)' – Fendy
@Fendy tạo ra cùng một truy vấn –