我一直在网上搜索,但没有找到任何有用的东西。我有一个POCO类,我想连接到Entity Framework 6.x中的存储过程。我已经在Fluent API中看到了如何在插入,更新和删除....但不是直接阅读。
我发现了这个:EF 6 Code First Stored Procedure - Read Only,但它看起来只是某个控制器上某个方法。
有没有办法可以调用上下文,就像我对任何其他实体一样。即 ctx.Products.Where(p => p.ProductId == productId)?
答案 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);
}
}
这两个选项都不会很快实现并引入您的代码库。