2012-03-11 13 views
0

エンティティのフレームワークで私は新しいと私はそれに基づいてサービスを作ってみたいが、データベース内のほとんどのテーブルにあるis_removed属性に問題があります。エンティティのフレームワークのクエリとis_removedの属性

たとえば、私はUserテーブルとArticlesテーブルを持っています。ユーザーと記事の両方を削除できます(is_removed = 1)。私は削除されたユーザーや記事を処理したくない。さらに、残念ながらEFが私に必要なビューをCRUD操作する機会を与えないため、データベースのビューを作成したくない。

したがって、このような状況で私はこのようなすべてのテーブルのためのis_removed属性を使用してクエリを作成する必要があります(クエリが与えられたuser_idを持つユーザのためのすべての記事を返して):

db.User.Single(
    x => x.id == user_id && 
    x.is_removed == 0 
).Article.Where( 
    x => x.is_removed == 0 
); 

はあなたがそれのためにすべてのソリューションを持っていますか? is_removed各クエリのプロパティを使用せずにこのクエリを行う方法はありますか?

答えて

0

私は、エンティティstuffesにLINQのために分離プロジェクトを作成し、私はすべての私の操作のためのパブリッククラスを作成します。DALC:

は、クラスライブラリプロジェクトを作成したエンティティクラス は、例えば、クラス名を作成します 例えば、DALCへのパブリックプロパティを作成します。

public IQueryable<Article> Articles { get { return context.Articles.Where(x => x.is_removed == 0); } } 

これはあなたの問題の一部を解決するすべてではないと私はあなたが望むものすべてを実現することができるとは思わないだろう。生成されたエンティティ・クラスのすべての部分であり、それはあなたが新しいプロパティ、メソッド、フィールドwhithそれらのいずれかを拡張することができることを意味:


たぶん、あなたはあなたのエンティティの新しいプロパティを作成することができます。

public IQueryable<Article> ActiveArticles { get { return this.Articles.Where(x => x.is_removed == 0); } } 
:Userクラスのために

関連する問題