Asp.net mvc 带存储过程的VIE模型

Asp.net mvc 带存储过程的VIE模型,asp.net-mvc,linq-to-sql,model-view-controller,asp.net-mvc-2,stored-procedures,Asp.net Mvc,Linq To Sql,Model View Controller,Asp.net Mvc 2,Stored Procedures,我遵循scott gu的教程,使用存储过程检索数据。我通过在类上删除存储过程来设置存储过程的返回类型。现在我的问题是,我们能否将一些viewmodel设置为存储过程的返回类型,由于my view是myviewmodel的强类型,因此可以将存储过程的返回类型与某个自定义类型相关联:在.edmx design中,单击导入的存储过程,将函数导入名称设置为SomeCustomName,然后选择返回类型->实体->SomeEntity。现在有了存储过程返回实体模型,您可以将这些模型映射到最终返回到视图的视

我遵循scott gu的教程,使用存储过程检索数据。我通过在类上删除存储过程来设置存储过程的返回类型。现在我的问题是,我们能否将一些
viewmodel
设置为存储过程的返回类型,由于my view是my
viewmodel的强类型,因此可以将存储过程的返回类型与某个自定义类型相关联:在.edmx design中,单击导入的存储过程,将函数导入名称设置为SomeCustomName,然后选择返回类型->实体->SomeEntity。现在有了存储过程返回实体模型,您可以将这些模型映射到最终返回到视图的视图模型。将视图模型定制为视图,而不是直接传递SQL传输对象,这被认为是一种良好的做法。

[我还没有对ASP.NET MVC做任何事情,因此这一建议可能有点离题,但是…]

一个选项是通过右键单击->添加->类,在dbml设计器中创建ViewModel类。然后,将存储过程放到设计器中的新类上,或者如果失败了(就像我经常做的那样),将存储过程放到设计器图面上,并将其返回类型(Properties->return type)设置为新类


这是让存储过程返回自定义类型的一种方法,该自定义类型不是真正的LINQ to SQL实体,也不是自动生成的存储过程*结果类。(因为我听说将模型对象传递给视图是一种不好的形式——理想情况下,您传递的是ViewModel对象,对吗?)

我编写了一个数据库视图,而不是ViewModel,然后将视图拖到dbml中,并将存储过程的返回类型设置为view。这解决了我的问题。这可能对其他人有帮助

我不是建议在.Designer.cs文件中创建类-当然,在那里手动创建的任何内容都将在下一次dbml保存时删除。我的建议是在entity/dbml设计器中创建类,就像常规的LINQ到SQL实体类一样。除了通过将数据库表拖到曲面上来创建表之外,您只需使用我提到的右键单击->添加->类过程在那里创建类。在重新生成.designer.cs文件时,将维护使用此方法在设计器中创建的任何内容。