将存储过程添加到未显示在.edmx中的复杂类型(因此未映射)?

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

1(mvc3)我已经将一个存储过程添加到我的模型中,映射到ComplextType。

两个问题:

1)ComplextType.cs存在于Model1.tt下的类中但是没有出现在.edmx中? 2)当我尝试使用ComplexType.cs创建具有强类型视图的控制器时,它会错误地指出它无法创建,因为ComplextType.cs不是DbContextEntities类的一部分?

如何将这个复杂类型添加到.edmx并映射到我的dbcontext(我已经使用表格完成了这个但是不确定存储过程中缺少什么?

谢谢!

asp.net-mvc-3 entity-framework-4.1
1个回答
3
投票

对于那些刚从谷歌来到这里的人,:)我将给出基本上要做的事情,将存储过程映射到ADO.Net实体。

将数据库映射到EDMX文件(实体模型)时,实体模型会自动映射表和表以及复杂类型等。但是,数据库中创建的存储过程不会使用返回复杂类型进行映射。我们必须通过创建自己的复杂类型将它映射到Function导入中。可以在代码中访问此复杂类型。

这样做如下:

  1. 右键单击导入功能并添加新的功能导入。
  2. 将您的名称赋给函数并指定存储过程,然后选择复杂类型(如果存储过程返回复杂类型),或者您可以选择标量。如果您选择复杂类型,并且可以查看返回的列,则可以通过创建新的复杂类型来创建复杂类型。
  3. 因此,存储过程的返回数据将是一组复杂类型。

应该是一件应该访问设计或模型视图以更新实体模型。只需单击实体模型即可更新实体模型。仅在模型浏览器和数据库设计图中提供更新模型的选项。此模型浏览器可以从VS2010 / VS2012中的其他视图窗口中获取。这些信息似乎很无聊。相信我,如果你是新手,这些在开始时似乎很大。

很可能您将通过映射现有数据库来创建此实体模型。

请记住,即使您从数据库映射实体模型,您也可以通过删除不必要的实体(表)并创建复杂类型来自定义实体模型

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