Cho phép nói rằng tôi có một số User
với 2 thực thể có nguồn gốc Student
, Teacher
. Tôi đã sử dụng phương pháp TPH, vì vậy tôi thực sự không có tài sản nào cả trong lớp học của mình để cho tôi biết ai là giáo viên hay không.Bộ lọc với nhiều lớp dẫn xuất có Khung thực thể mã đầu tiên
tôi có 2 phép toán luận rằng nên cho phép tôi để tải một trong hai sinh viên hoặc giáo viên như thế này:
//IQueryable<User>
var query = userRepository.GetUsers();
//Type filtering
if (searchModel.IsStudent)
{
query = query.OfType<Student>();
}
if (searchModel.IsTeacher)
{
query = query.OfType<Teacher>();
}
Khi điều này cố gắng để đánh giá, tôi nhận được lỗi này khi cả hai đều đúng:
DbIsOfExpression requires an expression argument with a polymorphic result type that is compatible with the type argument.
Tôi đã xem xét một số câu trả lời ở đây trên SO nhưng chúng được hướng tới 1 loại lọc.
Sau đó tôi muốn làm một cái gì đó như thế này (mã hóa thô):
if(query.ToList().FirstOrDefault() is Student)
{
print "student";
}
Các bản đồ:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.Map<Teacher>(m => m.Requires("UserType").HasValue("Teach"))
.Map<Student>(m => m.Requires("UserType").HasValue("Stu"))
.Map<Staff>(m => m.Requires("UserType").HasValue("Staff"));
}
Bạn có thể cho chúng tôi thấy các lớp học của bạn không? Bạn đang sử dụng mã đầu tiên? Bạn có thể chia sẻ bất kỳ mã bản đồ nào? –
Loại truy vấn 'là gì? –
@LadislavMrnka Tôi đã thêm loại truy vấn –