2011-02-03 79 views
3

我有ef4 ctp5中奇怪的生成SQL的问题。实体框架4与ctp5和脏生成sql

我有简单的模型映射:

[Table("post_auction")] 
public class PostAuction 
{ 
    [Key,Column(Name="Id"),DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGenerationOption.Identity)] 
    public int Id { get; set; } 

    [Column(Name = "Number")] 
    public int Number { get; set; } 

    [Column(Name = "Label")] 
    public string Label { get; set; } 

    [Column(Name = "Description")] 
    public string Description { get; set; } 

    [Column(Name = "CategoryId")] 
    public int PostAuctionCategoryId { get; set; } 

    [Column(Name = "PriceCZK")] 
    public int PriceCZK { get; set; } 

    [NotMapped] 
    public bool IsAuctionPhotoExitst 
    { 
     get 
     { 
      if (File.Exists(HttpContext.Current.Server.MapPath("~/Public/Images/Posts/Thumbs/small_" + this.Number + ".jpg"))) 
       return true; 
      return false; 
     } 
    } 
} 

和我的LINQ查询:

_rovastampDbContext.PostAuctions.Where(x => x.PostAuctionCategoryId == auctionId).OrderBy(x => x.Id).ToList(); 

EF4探查显示我

SELECT 
    [Project1].[Id]   AS [Id], 
    [Project1].[Number]  AS [Number], 
    [Project1].[Label]  AS [Label], 
    [Project1].[Description] AS [Description], 
    [Project1].[CategoryId] AS [CategoryId], 
    [Project1].[PriceCZK] AS [PriceCZK] 
FROM 
    (SELECT 
     [Extent1].[Id]   AS [Id], 
     [Extent1].[Number]  AS [Number], 
     [Extent1].[Label]  AS [Label], 
     [Extent1].[Description] AS [Description], 
     [Extent1].[CategoryId] AS [CategoryId], 
     [Extent1].[PriceCZK] AS [PriceCZK] 
    FROM 
     [dbo].[post_auction] AS [Extent1] 
    WHERE 
     [Extent1].[CategoryId] = 1 /* @p__linq__0 */) AS [Project1] 
    ORDER BY 
     [Project1].[Id] ASC 

我的问题是一个非常简单的:为什么ef4生成那个复杂的查询,当正确的是

SELECT ... 
FROM TABLE 
WHERE CategoryId = 1 
ORDER BY Id ASC 

谢谢你的建议:)

马丁

编辑:如果我让EF创建数据库自动的,查询的问题仍然存在......

+0

看起来并不复杂,首先它会在那里执行ORDER BY – 2011-02-03 22:54:37

+0

@K Ivanov:这比需要更复杂。它通过>顺序选择>投影>选择。 “select into projection”不是必需的,可能会导致查询运行速度变慢。 – StriplingWarrior 2011-02-03 22:59:23

回答

0

非常好的问题。我猜这是一个错误,因为我的(edmx生成的)实体框架上下文不会按照你的方式产生投影。我会将其报告为一个错误。

0

是的,当然,看起来像Beta乱码的代码给我。我只是用LINQ-SQL也试过,没有什么相似之处。一定要报告!