【发布时间】:2010-04-28 17:15:26
【问题描述】:
我在想出与这个遗留存储过程等效的 Linq 时遇到了很多麻烦。最大的障碍是 ,它似乎不想让我在与 tblAddress 的连接上添加第二个“子句”。我收到了 Cannot resolve method... 错误。tblBusiness.tblAddress 被视为 EntitySet<tblAddress> 请参阅底部以了解当前的工作。
谁能指出我做错了什么?下面是,first,我需要转换的 SPROC,second,到目前为止我的 LINQ 尝试; 完全失败!
谢谢
SELECT dbo.tblPersonInsuranceCoverage.PersonInsuranceCoverageID,
dbo.tblPersonInsuranceCoverage.EffectiveDate,
dbo.tblPersonInsuranceCoverage.ExpirationDate,
dbo.tblPersonInsuranceCoverage.Priority,
dbo.tblAdminInsuranceCompanyType.TypeName AS CoverageCategory,
dbo.tblBusiness.BusinessName,
dbo.tblAdminInsuranceType.TypeName AS TypeName,
CASE WHEN dbo.tblAddress.AddressLine1 IS NULL THEN '' ELSE dbo.tblAddress.AddressLine1 END
+ ' ' +
CASE WHEN dbo.tblAddress.CityName IS NULL THEN '' ELSE '<BR>' + dbo.tblAddress.CityName END
+ ' ' +
CASE WHEN dbo.tblAddress.StateID IS NULL THEN ''
WHEN dbo.tblAddress.StateID = 'ns' THEN ''
ELSE dbo.tblAddress.StateID END AS Address
FROM
dbo.tblPersonInsuranceCoverage
LEFT OUTER JOIN dbo.tblInsuranceCompany
ON dbo.tblPersonInsuranceCoverage.InsuranceCompanyID = dbo.tblInsuranceCompany.InsuranceCompanyID
LEFT OUTER JOIN dbo.tblBusiness
ON dbo.tblBusiness.BusinessID = dbo.tblInsuranceCompany.BusinessID
LEFT OUTER JOIN dbo.tblAddress
ON dbo.tblAddress.BusinessID = dbo.tblBusiness.BusinessID and tblAddress.AddressTypeID = 'b'
LEFT OUTER JOIN dbo.tblAdminInsuranceCompanyType
ON dbo.tblPersonInsuranceCoverage.InsuranceCompanyTypeID = dbo.tblAdminInsuranceCompanyType.InsuranceCompanyTypeID
LEFT OUTER JOIN dbo.tblAdminInsuranceType
ON dbo.tblPersonInsuranceCoverage.InsuranceTypeID = dbo.tblAdminInsuranceType.InsuranceTypeID
WHERE tblPersonInsuranceCoverage.PersonID = @PersonID
var coverage =
from insuranceCoverage in context.tblPersonInsuranceCoverages
where insuranceCoverage.PersonID == personID
select
new
{
insuranceCoverage.PersonInsuranceCoverageID,
insuranceCoverage.EffectiveDate,
insuranceCoverage.ExpirationDate,
insuranceCoverage.Priority,
CoverageCategory = insuranceCoverage.tblInsuranceCompany.tblAdminInsuranceCompanyType.TypeName,
insuranceCoverage.tblInsuranceCompany.tblBusiness.BusinessName,
TypeName = insuranceCoverage.InsuranceTypeID,
Address = insuranceCoverage.tblInsuranceCompany.tblBusiness.tblAddresses
.Where(a => a.AddressTypeId = 'b')
.FirstOrDefault()
};
为进一步尝试编辑
所以我在 dbml 中添加了一些关联,以便我可以在下面接受 Craigs 的建议。它几乎可以工作。现在我在a.AddressTypeID 上收到Cannot resolve symbol。奇怪的是,Intellisense 告诉我tblAddress 是EntitySet<tblAdress>。我错过了一个关联,还是我有一个不合适的关联,或者我的层次太深了?
想法?
【问题讨论】:
标签: c# .net linq linq-to-sql stored-procedures