1
我是新来使用LINQ to SQL和我有一个问题LINQ到1 SQL预先加载到许多和多对多的关系船舶
这是我的模型的一部分:
- 访问> VisitProduct <产品
- 访问> VisitSample <产品
- 访问> VisitStatus
我想加载所有相关实体的访问实体,但它给了我一个“InvalidCastexception”。 ,我用这个代码:(?我不知道为什么发生这种情况)
using (TeamsExcellenceDataContext context = new TeamsExcellenceDataContext())
{
DataLoadOptions lo = new DataLoadOptions();
context.DeferredLoadingEnabled = false;
lo.LoadWith<Visit>(v => v.Visitstatus);
lo.LoadWith<Visit>(v => v.VisitProducts);
lo.LoadWith<Visit>(v => v.VisitSamples);
context.LoadOptions = lo;
var temp = (from v in context.Visits
where v.VisitID == visitID
select v).Single();
Visit v = temp;
}
生成的SQL语句被分成两个部分:
SELECT [t0].[VisitID], [t0].[StartDate], [t0].[EndDate], [t0].[TypeID], [t0].[StatusID], [t0].[NextObjective], [t0].[CpFeedback], [t0].[Feedback], [t0].[AccID], [t0].[CustMPID], [t0].[AccTreeID], [t0].[RepPermitDays], [t0].[ModeTypeID], [t0].[Recurrence], [t0].[RecurrenceParentKey], [t0].[CDate], [t2].[VisitID] AS [VisitID2], [t2].[ProductID], [t2].[VisitProductTurn], [t2].[CDate] AS [CDate2], (
SELECT COUNT(*)
FROM [dbo].[VisitProducts] AS [t3]
WHERE [t3].[VisitID] = [t0].[VisitID]
) AS [value], [t1].[VisitStatusID], [t1].[VisitStatusName], [t1].[VisitStatusMarker], [t1].[CDate] AS [CDate3]
FROM [dbo].[Visits] AS [t0]
INNER JOIN [dbo].[Visitstatus] AS [t1] ON [t1].[VisitStatusID] = [t0].[StatusID]
LEFT OUTER JOIN [dbo].[VisitProducts] AS [t2] ON [t2].[VisitID] = [t0].[VisitID]
WHERE [t0].[VisitID] = @p0
ORDER BY [t0].[VisitID], [t1].[VisitStatusID], [t2].[ProductID]
-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [411]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.0.30319.1
SELECT [t0].[VisiteID], [t0].[ProductID], [t0].[SampleQuantity], [t0].[CDate]
FROM [dbo].[VisitSamples] AS [t0]
WHERE [t0].[VisiteID] = @x1
-- @x1: Input Int (Size = -1; Prec = 0; Scale = 0) [411]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.0.30319.1/
的异常不会不会发生如果我省略这一行:
lo.LoadWith<Visit>(v => v.Visitstatus);
或任何这些线路的
lo.LoadWith<Visit>(v => v.VisitSamples);
lo.LoadWith<Visit>(v => v.VisitProducts);
我做错了什么或我该如何解决此问题?
然后你应该在你的模型中使用字节而不是int。 TinyInt转换为字节。 – 2012-04-24 06:52:54