C# 实体框架/linq查询问题
因此,我试图解决silverlight报告应用程序中缺少存储过程支持的问题,我的linq有点问题 我有一个如下所示的存储过程:C# 实体框架/linq查询问题,c#,entity-framework,silverlight-4.0,wcf-ria-services,C#,Entity Framework,Silverlight 4.0,Wcf Ria Services,因此,我试图解决silverlight报告应用程序中缺少存储过程支持的问题,我的linq有点问题 我有一个如下所示的存储过程: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Some Dev Guy -- Create date: 11/02/10 -- ===================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Some Dev Guy
-- Create date: 11/02/10
-- =============================================
Alter PROCEDURE spGetTopReferers
@p_sitekey SmallInt,
@p_startDate SmallDateTime,
@p_endDate SmallDateTime
AS
BEGIN
SET NOCOUNT ON;
SELECT
TOP 10
SUM(DaySummaryReferrers.Visits) AS Visits,
SUM(DaySummaryReferrers.NewVisitors) AS 'New Visitors',
SUM(DaySummaryReferrers.Prospects) AS Prospects,
SUM(DaySummaryReferrers.Customers) AS Customers,
Referrers.Referrer
FROM
DaySummaryReferrers
LEFT OUTER JOIN
Referrers
ON
DaySummaryReferrers.ReferrerID = Referrers.ReferrerID
Where
DaySummaryReferrers.SiteKey = @p_sitekey
AND
DaySummaryReferrers.Dated
Between
@p_startDate
AND
@p_endDate
GROUP BY
Referrers.Referrer
ORDER BY
Visits DESC;
END
GO
我已经创建了以下DomainService类,以便今天可以使用实体框架进行查询。我想将查询结果推送到我的自定义数据结构中,因为我没有一个实体包含我的报告所需的所有信息(特别是访问和参考)
错误:
Error 2 'string' does not contain a definition for 'Customers' and no extension method 'Customers' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?) C:\Users\User\documents\visual studio 2010\Projects\Reports\Reports.Web\Services\WebReportAggregateService.cs 53 108 Reports.Web
对于访问、自定义、潜在客户、访客、推荐人和推荐人ID,我会收到此错误
如果您在类属性中有
Customer
单数形式,在LINQ中有Customers
复数形式,我们将不胜感激
public class TopReferers
{
[Key]
[Editable(false)]
public int reffererID { get; set; }
public int? Visits { get; set; }
public int? Visitors { get; set; }
public int? Prospects { get; set; }
public int? **Customer** { get; set; }
public String Referrer { get; set; }
}
什么类型的
推荐人。推荐人1
?从错误中,听起来您的组键是一个字符串
我认为您要做的是通过复合键进行分组:
group referrer by new { ID = referrerName.ReferrerID, Name = referrerName.Referrer1 }
然后选择以下选项:
select new TopReferers { referrerID = g.Key.ID,
Visits = g.Sum(x => x.Visits),
Visitors = g.Sum(x => x.NewVisitors),
Prospects = g.Sum(x => x.Prospects),
Customer = g.Sum(x => x.Customers),
Referrer = g.Key.Name }
你可以从在你的问题中包含一个错误开始…这个错误是为所有g.Key属性生成的。错误2“字符串”不包含“客户”的定义,并且找不到接受“字符串”类型的第一个参数的扩展方法“客户”(是否缺少using指令或程序集引用?)C:\Users\User\documents\visualstudio 2010\Projects\Reports\Reports.Web\Services\webreportaggregateseservice.cs 53 108 Reports.Web结果表明,我在myreferersvariable上使用Take(10)方法导致了一些错误。我的组键是字符串,根据您的句子上下文,我假设组密钥需要是int?@Robotsushi,否-如果尝试调用int
上的Customers
方法,会产生类似的错误。请看我编辑的答案-我不完全确定ID和名称的来源,但我认为这很接近。
group referrer by new { ID = referrerName.ReferrerID, Name = referrerName.Referrer1 }
select new TopReferers { referrerID = g.Key.ID,
Visits = g.Sum(x => x.Visits),
Visitors = g.Sum(x => x.NewVisitors),
Prospects = g.Sum(x => x.Prospects),
Customer = g.Sum(x => x.Customers),
Referrer = g.Key.Name }