User
と2つの派生エンティティStudent
,Teacher
があるとします。私はTPHメソッドを使用していたので、教師であるかどうかを私に教えるために実際にプロパティは全くありませんでした。コードファーストエンティティフレームワークを使用した複数の派生クラスによるフィルタ
私は私がこのような学生や教員のいずれかをロードできるようにする必要があります2つのブール値があります。これは、評価しようとすると、両方に該当する場合、私はこのエラーを取得する
//IQueryable<User>
var query = userRepository.GetUsers();
//Type filtering
if (searchModel.IsStudent)
{
query = query.OfType<Student>();
}
if (searchModel.IsTeacher)
{
query = query.OfType<Teacher>();
}
を:
DbIsOfExpression requires an expression argument with a polymorphic result type that is compatible with the type argument.
私は既にここでいくつかの答えを見ましたが、1種類のフィルタリングに対応しています。
私は、この(ラフコーディング)のような何かをしたいと思います:
if(query.ToList().FirstOrDefault() is Student)
{
print "student";
}
マッピング:
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"));
}
私たちはあなたのクラスを教えてください。まずコードを使用していますか?共有できるマッピングコードですか? –
'query'の種類は何ですか? –
@LadislavMrnkaクエリタイプ –