首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在代码优先的实体框架中使用视图

如何在代码优先的实体框架中使用视图
EN

Stack Overflow用户
提问于 2011-09-18 19:48:58
回答 2查看 100.2K关注 0票数 95

如何在实体框架代码中先使用数据库视图,

EN

回答 2

Stack Overflow用户

发布于 2017-05-31 01:03:00

这可能是一个更新,但首先要在EF代码中使用视图,只需将表(“NameOfView”)添加到类的顶部,所有这些都应该可以正常工作,而不必经历其他人正在经历的所有循环。此外,您还必须将其中一列报告为键列。下面是我实现它的示例代码。

代码语言:javascript
复制
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace SomeProject.Data
{
    [Table("SomeView")]
    public class SomeView
    {
        [Key]
        public int NameID { get; set; }
        public string Name { get; set; }
    }
}

下面是上下文的样子

代码语言:javascript
复制
using System.Data.Entity;

namespace SomeProject.Data
{
    public class DatabaseContext : DbContext
    {
        public DbSet<SomeView> SomeViews { get; set; }
    }
}
票数 33
EN

Stack Overflow用户

发布于 2013-10-10 11:54:53

如果您想要的只是一堆反规范化的对象,那么您可能只是在DbContext类中创建了一个仅限get的公共IQueryable<TDenormolized>属性。

get中,您将返回一个Linq结果,以将反规范化的值投影到反规范化的对象中。这可能比编写DB视图更好,因为您正在编程,您不受仅使用select语句的限制。而且它是编译时类型安全的。

只需小心不要触发枚举,比如ToList()调用,这会破坏延迟的查询,最终可能会从数据库中返回一百万条记录,并在应用程序服务器上对它们进行过滤。

我不知道这是不是正确的方法,但我试过了,它对我很有效。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7461265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档