スタディとシリーズの2つのテーブルがあります。シリーズはFKでスタディに戻されるため、1つのスタディには可変数のシリーズが含まれます。各シリーズアイテムにはDeleted
、データベースから論理的に削除されたことを示す列があります。
Deleted
含まれているすべてのシリーズが削除された場合にのみtrueを返すStudyクラスのプロパティを実装しようとしています。O / R Designerで生成されたクラスを使用しているので、Studyタイプのユーザーが変更可能な部分クラスに以下を追加しました。
public bool Deleted
{
get
{
var nonDeletedSeries = from s in Series
where !s.Deleted
select s;
return nonDeletedSeries.Count() == 0;
}
set
{
foreach (var series in Series)
{
series.Deleted = value;
}
}
}
これにより、「メンバー'PiccoloDatabase.Study.Deleted'にはSQLへの変換がサポートされていません」という例外が発生します。getを呼び出すこの単純なクエリが実行されると:
IQueryable<Study> dataQuery = dbCtxt.Studies;
dataQuery = dataQuery.Where((s) => !s.Deleted);
foreach (var study in dataQuery)
{
...
}
このhttp://www.foliotek.com/devblog/using-custom-properties-inside-linq-to-sql-queries/に基づいて、次のアプローチを試しました。
static Expression<Func<Study, bool>> DeletedExpr = t => false;
public bool Deleted
{
get
{
var nameFunc = DeletedExpr.Compile();
return nameFunc(this);
}
set
{ ... same as before
}
}
クエリを実行すると、SQLへの変換がサポートされていないという同じ例外が発生します。(ラムダ式のロジックはまだ関係ありません-例外を乗り越えようとしているだけです。)
SQLへの変換を可能にする基本的なプロパティまたは何かが不足していますか?この例外に関するSOの投稿のほとんどを読みましたが、私の場合にぴったり合うものはないようです。