2012-03-11 60 views
0

即时通讯新的实体框架,我想使服务基于它,但我有一个问题is_removed attrib是在我的大多数表中的数据库。实体框架查询和is_removed属性

例如我有用户表和文章表。我可以删除用户和文章(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

我会创造对LINQ分离项目的实体stuffes,我会给我的所有操作的公共类:

创建一个类库项目 创建实体类 创建例如一个类名:DALC 到DALC创建公共属性,例如:

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

这将解决一些你的问题,但不是全部,我不认为你可以实现你想要的一切。


也许你可以创建您的实体新的属性:所有生成的实体类是局部的,这意味着你可以扩展任何人蒙山新的属性,方法,字段。

对于用户等级:

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