Linq to Entities查询无法执行

问题描述:

我并不太擅长于将查询写在我身上。我试图创建一个包含来自3个不同实体的信息的查询对象。当查询执行时,它告诉我一个EntityServerException未处理。我正在使用DTO来提取特定列。这里是我的基本DTO:Linq to Entities查询无法执行

public class LeadRestrictionsDto : BasicModelBase 
{ 
    private Guid _userId; 
    private Guid _leadId; 
    private string _restrictionDescription; 
    private DateTime? _modified; 

    [Key] 
    public Guid UserId 
    { 
     get { return _userId; } 
     set { SetValueAndNotify(() => UserId, ref _userId, value); } 
    } 

    public Guid LeadId 
    { 
     get { return _leadId; } 
     set { SetValueAndNotify(() => LeadId, ref _leadId, value); } 
    } 

    public string RestrictionDescription 
    { 
     get { return _restrictionDescription; } 
     set { SetValueAndNotify(() => RestrictionDescription, ref _restrictionDescription, value); } 
    } 

    public DateTime? Modified 
    { 
     get { return _modified; } 
     set { SetValueAndNotify(() => Modified, ref _modified, value); } 
    } 
} 

,这里是我想写一个接受的参数类型一个GUID查询:

public List<LeadRestrictionsDto> GetLeadRestrictionListingNow(Guid id) 
    { 

     IEnumerable<LeadRestrictionsDto> restrictions = from user in Manager.Users 
         join lead in Manager.Leads on user.UserId equals lead.OriginalOwnerId 
         join restriction in Manager.UserRestrictionListings on user.UserId equals restriction.UserId 
         where user.UserId == id 
         select new LeadRestrictionsDto 
            { 
             Modified = restriction.Modified, 
             RestrictionDescription = restriction.Description, 
             UserId = user.UserId, 
             LeadId = lead.LeadId 
            }; 

     List<LeadRestrictionsDto> userRestiction = restrictions.ToList(); //Exception occurs here 
     return userRestiction; 
    } 

这里是确切的例外,我得到:

Unable to locate type: System.Linq.IQueryable`1[[Prime.Library.Repository.LeadRestrictionsDto, Prime.Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089. Check that the assembly holding this type is available in the bin/exe folder. Also check that both your assemblies and DevForce assemblies have the expected version number on both client and server. 

它几乎看起来好像它试图在我的model.edmx中找到我的Dto?对不起,如果这听起来无知。有没有人有一个想法,为什么我得到这个异常?我在LINQPad中玩过这个查询,并且它没有问题地将数据拉回来。

+0

你能给的结构和类型的一些细节涉及的项目? – 2012-08-09 09:04:07

我想这有一些东西与我们的服务器不被更新,但我能避开它返回一个匿名类型,像这样:

public List<LeadRestrictionsDto> GetLeadRestrictionListingNow(Guid id) 
    { 

     var restrictions = from user in Manager.Users 
         join lead in Manager.Leads on user.UserId equals lead.OriginalOwnerId 
         join restriction in Manager.UserRestrictionListings on user.UserId equals restriction.UserId 
         where user.UserId == id && (restriction.RestrictionId == 100 || restriction.RestrictionId == 200) && restriction.Active == true 
         select new 
            { 
             Modified = restriction.Modified, 
             RestrictionDescription = restriction.Description, 
             UserId = user.UserId, 
             LeadId = lead.LeadId, 
             FirstName = lead.FirstName, 
             Created = lead.Created, 
             LastName = lead.LastName 

            }; 


     return restrictions.ToList().Select(x=>new LeadRestrictionsDto() 
             { 
              Modified = x.Modified, 
              RestrictionDescription = x.RestrictionDescription, 
              UserId = x.UserId, 
              LeadId = x.LeadId, 
              FirstName = x.FirstName, 
              Created = x.Created, 
              LastName = x.LastName 
             }).ToList(); 


    }