在EF 6 Fluent API中从CRUD读取地图

时间:2014-07-22 05:55:47

标签: entity-framework entity-framework-6 ef-fluent-api

我一直在网上搜索,但没有找到任何有用的东西。我有一个POCO类,我想连接到Entity Framework 6.x中的存储过程。我已经在Fluent API中看到了如何在插入,更新和删除....但不是直接阅读。

我发现了这个:EF 6 Code First Stored Procedure - Read Only,但它看起来只是某个控制器上某个方法。

有没有办法可以调用上下文,就像我对任何其他实体一样。即     ctx.Products.Where(p => p.ProductId == productId)?

1 个答案:

答案 0 :(得分:1)

我会接近这是两种方式之一。

域/ POCO映射

如果基础问题是您的实体框架模型POCO和您的(可能是纯逻辑的)域之间不匹配,我会将EF模型直接匹配到数据库模式,并将它们相应地映射到域类型。我们为您的EF poco提供了一个单独的域模型。先前由您的proc执行的映射工作将在域映射器中完成。

存储库背后的抽象DbContext用法

不是让消费者直接查询上下文,而是可以抽象实体存储库背后的上下文,并在调用proc的SqlQuery和存储库方法中的POCO之间进行映射

E.g。这是一些粗略的代码:

public class MyEntityRepository()
{
    public ICollection<MyEntity> GetAll()
    {
        return _myContext.SqlQuery<MyEntity>("exec myProc", params); 
    }
}

这两个选项都不会很快实现并引入您的代码库。