如何在实体框架的POCO实现上手工创建复杂类型

本文关键字:创建 类型 复杂 实现 POCO 实体 框架 | 更新日期: 2023-09-27 18:12:58

我正在使用实体框架,但是已经关闭了代码生成,并使用我自己的poco类(详见http://blogs.msdn.com/b/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx)。到目前为止,添加实体以公开一堆表以供查询还不错,但是现在我希望公开一个存储过程。这不是那么简单-我如何自己编写一个创建一个复杂类型,然后将其连接到实体模型?

我在edmx上导入函数引用,我可以将返回类型设置为复杂,甚至可以单击generate,但这是不可用的,因为我没有使用自动代码生成。我需要能够创建我自己的,它会出现在那个列表中供我选择,然后能够在我的实体上下文类中创建相应的条目。在线的唯一信息似乎是通过可视化界面生成复杂的类。我不愿意手动编辑edmx文件,因为它只会在重新生成时被删除。

我已经试过了;

  • 将函数添加到我的上下文类中,而不将其放在edmx;这显然打破了一个无效的操作异常"函数导入'GetT4OpenCases'无法在容器'EclipseEntities'中找到。"

  • 将函数添加到edmx,并将返回类型设置为none,然后将我的函数添加到我手工编码的复杂类型的上下文中,在那里我看到另一个无效的操作异常"存储过程或函数'GetT4OpenCases'没有返回类型。ExecuteFunction只支持具有返回类型的存储过程和函数。"

我很茫然!

谢谢。

如何在实体框架的POCO实现上手工创建复杂类型

这很简单——在edmx文件

  • 更新数据模型以包含我想要的存储过程
  • 创建功能导入
  • 在弹出窗口中,选择Create Complex Type
  • 创建一个与建议的复杂类型同名/具有相同属性的新类
  • 为您的手动上下文类添加条目,如;

    public IEnumerable get4brokers (){返回base.ExecuteFunction("GetT4Brokers");}

相关文章: