Had*_*das 2 c# sql entity-framework entity-framework-4
我有一个存储过程在我的asp.net mvc3应用程序中使用Entity Framework:
CREATE PROCEDURE dbo.MinMax
AS
DECLARE @T1 TABLE(MinColorsId int,MAXColorsId int)
INSERT @T1 
select MIN(ColorsId) as MinColorsId,MAX(ColorsId) as MAXColorsId
from DiamondInfoes 
SELECT * FROM @T1
RETURN
在我的模型中,我有与过程表结果相同的属性名称:
public class colorModel
{
    [Display(Name = "MinColorsId")]
    public float MinColorsId { get; set; }
    [Display(Name = "MaxColorsId")]
    public float MaxColorsId { get; set; }
}
在控制器中我运行存储过程:
private _ModelContainer m_db = new _ModelContainer();
var minmax = m_db.MinMax();
我想设置包含程序结果colorModel的minmax那个?(简而言之,我有很多属性...)
首先,您可以简化存储过程:
CREATE PROCEDURE dbo.MinMax
AS
   SELECT  
       MIN(ColorsId) AS MinColorsId,
       MAX(ColorsId) AS MaXColorsId
   FROM dbo.DiamondInfoes 
拥有该表变量绝对没有必要也没有任何意义 - 它只会给你带来压力TempDB.
接下来 - 如果您使用的是.NET 4.0并使用数据库优先方法 - 您可以从向导将该存储过程导入EDMX模型:

接下来,转到Visual Studio中的模型浏览器,在模型的物理"存储"部分中查找新导入的存储过程.在存储过程中,右键单击并选择Add Function Import:

现在弹出一个对话框,让您有机会选择此存储过程返回的内容 - 在您的情况下,您说您已经有一个表示该结果的类型 - 所以在您的情况下,您应该在下拉列表中找到此类型Entities-选择它并关闭对话框:

您现在应该在您的ObjectContext-derived类上有一个表示此存储过程的方法,并返回您选择的类型的实体.