1
EF6拡張メソッドを関連エンティティ(1対多の関係)で再利用しようとしています。不自然な例:エンティティフレームワーク - 関連する拡張メソッドの再利用
public class Parent
{
public string State { get; set; }
public ICollection<Child> Children { get; set; }
}
public class Child
{
public string Value { get; set; }
public Parent Parent { get; set; }
}
public static ParentNamedScopes
{
public static IQueryable<Parent> IsReady(this IQueryable<Parent> queryable)
{
return queryable.Where(p => p.State == "Ready" || p.State == "New");
}
}
// ...
var children = db.Children
// my goal, but can't cast Parent to IQueryable<Parent>
// ------------------v
.Where(c => c.Parent.IsReady())
.Where(c => c.Value == "Foobar");
私は、サブクエリに関連するコレクションにAsQueryable()を使用しての例を見てきましたが、親は、単一のレコードですので、それはオプションではありません。私は明らかな何かを見逃していると確信して、私はGoogleのfooが今日答えを立てていないので謝罪します。
は、私が行方不明になった明白な答えをありがとう:あなたのユースケースはより複雑になった場合、あなただけのあなたの
Expression<Func<Parent, bool>>
を与え、そしてそれを再利用可能にするために、あなたのクエリを操作するためLINQKitようなものを使用することを変更する必要があります。調査する新しいプロジェクトにもう一度感謝します。 –