实体框架 - 您能否将导入的存储过程的结果类型映射到自定义实体类型?

Posted

技术标签:

【中文标题】实体框架 - 您能否将导入的存储过程的结果类型映射到自定义实体类型?【英文标题】:Entity Framework - Can you map the result type of an imported stored procedure to a custom entity type? 【发布时间】:2010-09-10 12:52:33 【问题描述】:

我已经在一个单独的 dll 中有一个实体模型,其中包含我需要使用的各种对象。我真的不想使用 EF 设计器创建或复制实体。相反,我想对其进行配置,以便在调用存储过程时它将某些列映射到特定属性。

我知道您可以使用 LinqToSql 中的自定义 DataContext 做一些非常接近此的事情。问题是您不能将列分配给复杂的属性类型。例如:我可能会返回一个包含用户地址的列。我想将用户的地址详细信息存储在作为用户对象属性的地址对象中。所以,STREET 列应该映射到 User.Address.Street。

有什么想法吗?

【问题讨论】:

希望这个链接对我有帮助。 blogs.msdn.com/efdesign/archive/2008/07/18/…我很惊讶没有人愿意这样做.. 【参考方案1】:

这里有几个选项。

    您可以创建“复杂类型”并将其映射到过程结果。但是,您必须在 EDMX 中执行此操作;设计师不支持。阅读this article了解详情。请注意,复杂类型不是实体类型本身,因此这可能符合您的需求,也可能不符合您的需求。但是您可以找到stored procs which use "Address" 的示例。

    您可以将过程的可见性更改为私有,然后在任何手动编写的部分类文件中为其编写一个公共接口,该文件执行您想要的映射。或者只是重载过程。

【讨论】:

以上是关于实体框架 - 您能否将导入的存储过程的结果类型映射到自定义实体类型?的主要内容,如果未能解决你的问题,请参考以下文章

实体框架,具有返回类型的函数导入:无..返回 int?

具有实体框架问题的 Informix 存储过程

实体框架数据集映射

更新存储过程实体框架抛出“验证FunctionImport名称是唯一的”错误

实体框架 - 具有多个结果集的存储过程 - 没有行返回

实体框架:减少往返的方法?