我目前有一个数据库,它使用视图来展平来自多个联接的数据,并作为网页的只读界面出现。这些视图基本上基于单个实体表。
例如,我有一个表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();
这看起来似乎有点低效,所以我想知道是否有更好的方法,因为我的搜索并没有真正揭示与我的确切问题类似的东西。
非常感谢任何帮助。
答案 0 :(得分:1)
似乎是正确的。我会将.SingleOrDefault()
和.Single()
更改为.FirstOrDefault()
和.First()
以提高效果。
但另一个问题仍然存在。您的viewUser
和tblUser
完全相同吗?
也就是说,像viewUser
这样的命名类应该是ViewUser
和TblUser