实体框架-我们可以将导入的存储过程的结果类型映射到自定义实体类型吗?

时间:2020-03-06 14:19:56  来源:igfitidea点击:

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

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

有任何想法吗?

解决方案

这里有两个选择。

  • 我们可以创建"复杂类型"并将其映射到过程结果。但是,我们必须在EDMX中执行此操作。设计师不支持它。阅读本文以了解详细信息。请注意,复杂类型本身不是实体类型,因此这可能会也可能无法满足需求。但是我们可以找到使用"地址"的存储过程的示例。
  • 我们可以将过程的可见性更改为私有,然后在执行所需映射的任何手动编写的部分类文件中为它编写一个公共接口。或者只是重载该过程。