通过搜索视图实体返回表实体的最佳实践

时间:2014-08-03 11:05:56

标签: c# asp.net entity-framework entity-framework-5

我目前有一个数据库,它使用视图来展平来自多个联接的数据,并作为网页的只读界面出现。这些视图基本上基于单个实体表。

例如,我有一个表tblUser,我有一个视图viewUser。该视图显然是来自该表的数据以及一些其他查找表。现在我想要更新/检索tblUser实体但是基于视图中的一些扩展字段,例如域,用户状态和类型。

所以我的问题是,根据仅在视图中可用的搜索条件检查和检索表实体的最佳方法是什么?目前我这样做:

    viewUser view = context.viewUsers.SingleOrDefault(a => a.Logon == 'test' && a.Domain == 'test' && !a.Deleted);
    tblUser user = (view != null) ? context.tblUsers.Single(a => a.ID == view.ID) : new tblUser();

这看起来似乎有点低效,所以我想知道是否有更好的方法,因为我的搜索并没有真正揭示与我的确切问题类似的东西。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

似乎是正确的。我会将.SingleOrDefault().Single()更改为.FirstOrDefault().First()以提高效果。

但另一个问题仍然存在。您的viewUsertblUser完全相同吗? 也就是说,像viewUser这样的命名类应该是ViewUserTblUser