您如何处理仅使用 EF4 plus Repository Pattern 显示视图的应用程序?

Posted

技术标签:

【中文标题】您如何处理仅使用 EF4 plus Repository Pattern 显示视图的应用程序?【英文标题】:How do you handle application that displays only views with EF4 plus Repository Pattern? 【发布时间】:2014-12-02 17:49:53 【问题描述】:

我的数据库有 5 个视图 (SQL Server 2008),客户端需要一个前端 Web (MVC4) 来查看带有过滤器的数据。我正在使用 Entity Framework 4 映射到数据库...不确定如何调整通常强制执行 CRUD 的存储库模式的实现。该应用程序是只读的,没有 DELETE、ADD 或 UPDATE。只是 GET 和过滤能力?

【问题讨论】:

也许您应该首先问一个问题,如何以最简单的方式提供只读数据。为什么你需要一个存储库?当您可以按原样呈现视图数据时,您甚至不需要视图模型。所以也许只剩下过滤 DbSet 了。 Good Point Gert,我有时会卡在遵循约定和模式.. 【参考方案1】:

通常,在实现存储库模式时,您会执行以下操作:

public class ReadOnlyRepository<TEntity> : IReadOnlyRepository
    where TEntity : class

    // Read-only methods here


public class Repository<TEntity> : ReadOnlyRepository<TEntity>, IRepository
    where TEntity : class

    // Write methods here

然后您可以将ReadOnlyRepository&lt;SomeReadOnlyEntity&gt; 注入您想要只读访问的位置。

就 Entity Framework 而言,它可以与视图无缝协作。您只需将实体应附加到的视图指定为表名:

[Table("SomeView")]
public class SomeEntityFromView

    ...

【讨论】:

以上是关于您如何处理仅使用 EF4 plus Repository Pattern 显示视图的应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

您如何处理使用 36 位映射的 IO?

您如何处理多个环境的多个 web.config 文件?

您如何处理模型类中的外键关系

在类似 LMAX 的破坏者模式中,您如何处理缓慢的消费者?

您如何处理 Spring Data JPA 中 ID 数组的批量删除?

您如何处理 REST API 服务器中的高吞吐量函数?