我正在网上搜索这个问题的答案,我已经做得很短。我有一个简单的存储过程,从视图中选择列,我想将这些数据保存在我的程序中的模型中。但是,当我调用存储过程时,它有一个返回类型的ObjectResult,所以我一直在尝试实现这个,但我不知道在我的模型中使用什么数据类型。
CREATE PROCEDURE [dbo].[GetPartnerCompanyRelationships]
@inputCoid INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT [CoId]
,[CompanyName]
,[CompanyId]
,[PartnerCoId]
,[PartnerCompanyName]
,Count(*) as DocumentTotal
FROM vwDocuments
where coid = @inputCoid and DocumentType = 'order' and PartnerCoId <> @inputCoid
group by [CoId]
,[CompanyName]
,[CompanyId]
,[PartnerCoId]
,[PartnerCompanyName]
union all
SELECT [CoId]
,[CompanyName]
,[CompanyId]
,[PartnerCoId]
,[PartnerCompanyName]
,Count(*) as DocumentTotal
FROM vwDocuments
where PartnerCoId = @inputCoid and DocumentType = 'order' and CoId <> @inputCoid
group by [CoId]
,[CompanyName]
,[CompanyId]
,[PartnerCoId]
,[PartnerCompanyName]
END
该程序只选择这些列。
我希望我的模型能够保存这些数据,以便我可以在View中引用它并从中构建一个表,但问题是保存这些数据。
public ObjectResult GetPartnerCompanyRelationships(int coid)
{
using (var context = LTPortalEntities.getEntities())
{
ObjectResult x = context.GetPartnerCompanyRelationships(coid);
return x;
}
}
这是我在datahelper类和Controller中尝试过的:
var companyList = _da.GetPartnerCompanyRelationships(coid);
foreach (vwDocument item in companyList)
{
MyDashBoard.CompanyList.Add(item);
}
如果这很模糊,请告诉我要包含的内容,这是我第一次使用存储过程获取信息。
我遇到的另一个问题是尝试使用视图中的select来ORDER BY,我的程序不太喜欢。所以我想知道创建一个函数会更容易吗?如果是这样,如何进入edmx。
答案 0 :(得分:1)
我不知道存储过程向我的数据类添加了一个对象 我只需要用:
更新我的模型 public List<GetPartnerCompanyRelationships_Result> DashboardCompanyList { get; set; }
使用以下命令更新我的DBHelper:
public List<GetPartnerCompanyRelationships_Result> GetPartnerCompanyRelationships(int coid)
{
using (var context = Entities.getEntities())
{
var x = context.GetPartnerCompanyRelationships(coid);
return x.ToList();
}
}
从我的控制器调用该方法:
MyDashBoard.DashboardCompanyList = _da.GetPartnerCompanyRelationships(coid);
这使我可以使用模型中的所有复杂数据。