如何在我的 Entity Framework v4 + POCO 中使用存储过程

问题描述 投票:0回答:1

我有一个非常简单的 Entity Framework 项目和 POCO Entities。我有一个使用 EF 向导导入的存储过程。

然后,我创建了自己的 EF 实体,然后添加函数导入以将存储过程映射到我的 EF 实体。

现在,我不确定如何将我的 EF 实体映射到 POCO。因此,我不断收到以下错误:

错误11007:实体类型“XXXXX”是 未映射。

如何将此实体映射到 POCO?

.net entity-framework stored-procedures entity-framework-4 poco
1个回答
6
投票

好的。这就是我最终所做的。

使用 POCO

即。

.edmx
Custom Tool
已删除/没有自动生成的实体等。

  1. 导入功能::手动导入存储过程。

在您的上下文课程中...

public class SqlServerContext : ObjectContext, IUnitOfWork
{
    public SqlServerContext(EntityConnection entityConnection, 
                            ILoggingService loggingService)
        : base(entityConnection) { .... }

    public ObjectResult<Location> FindLocationsWithinABoundingBox(decimal upperLeftLongitude,
                                                                  decimal upperLeftLatitude,
                                                                  decimal lowerRightLongitude,
                                                                  decimal lowerRightLatitude)
    {
        return base.ExecuteFunction<Location>("FindLocationsWithinABoundingBox",
                                              new ObjectParameter("UpperLeftLatitude", upperLeftLongitude),
                                              new ObjectParameter("UpperLeftLongitude", upperLeftLatitude),
                                              new ObjectParameter("LowerRightLongitude", lowerRightLongitude),
                                              new ObjectParameter("LowerRightLatitude", lowerRightLatitude));
    }
}

使用自动生成的实体等(EF默认设置方式)

  1. 创建自定义复杂类型(也将用于映射存储过程)。
  2. 导入功能::手动导入存储过程。
  3. 将(导入的 sp 的)返回类型映射到您创建的自定义复杂类型。

就是这样。

不确定我的 POCO 方式是否是最好的做事方式,但它..很好..有效:)

而且这是我问过的一个相关的StackOverflow问题关于以服务/IQueryable方式使用这个存储过程......:)

© www.soinside.com 2019 - 2024. All rights reserved.