1

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

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

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

4

1 回答 1

1

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

域/POCO 映射

如果根本问题是您的实体框架模型 POCO 和您的(可能是纯逻辑的)域之间的不匹配,我会将 EF 模型直接匹配到数据库模式,然后它们相应地将它们映射到域类型。即对您的 EF poco 有一个单独的域模型。然后,您的 proc 之前完成的映射工作将在域映射器中完成。

Repositories 背后的抽象 DbContext 用法

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

例如这里是一些粗略的代码:

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

但是,这些选项都不会很快实现并引入您的代码库。

于 2014-07-22T12:03:18.017 回答