实体框架sql语句包含具有复合主键

时间:2017-04-27 16:21:18

标签: c# .net entity-framework

EF 6.1.3(数据库优先) .net framework 4.6.1

两个表之间的简单映射,如下图所示 enter image description here 这里生成的图表(由向导自动生成) enter image description here

声明 Tic_Tickets_new.AsQuerable().Dump()在以下sql查询中翻译

 SELECT 
        [Extent1].[IdSerie_Ticket] AS [IdSerie_Ticket], 
        [Extent1].[IdTicket] AS [IdTicket], 
        [Extent2].[IdNatura] AS [IdNatura]
        FROM  [dbo].[Tic_Tickets_new] AS [Extent1]
        LEFT OUTER JOIN [dbo].[Tic_Tickets_new] AS [Extent2] ON ([Extent2].[  IdNatura] IS NOT NULL) AND ([Extent1].[IdSerie_Ticket] = [Extent2].[IdSerie_Ticket])
    AND ([Extent1].[IdTicket] = [Extent2].[IdTicket])

惊喜!加入的目的是什么??这似乎完全没用了

删除复合主键并使用单个字段代理键,生成sql语句变得简单流畅,无需任何连接

更新 参考评论可能是我需要明确这篇文章的意图;我上面解释的行为是当我尝试将实体partecipating加载到*到0..1关联或0..1到0..1,具有复合主键时,我已经在不同项目(数据库优先)上验证的行为并将关联定义为独立关联和延迟加载启用;所以我认为这是一种设计行为。我已经有一个解决方法,解决方法是更改​​从Independent Association到Foreign Key Association的关联类型。 但问题是为什么?

0 个答案:

没有答案