C# 添加Include时比较不起作用

C# 添加Include时比较不起作用,c#,entity-framework,linq,C#,Entity Framework,Linq,我在数据库中得到了以下用户类,它有两个关系,其中Profile可以为null public class User { //... public string Sign {get; set;} public long? ProfileId {get; set;} public virtual Profile Profile {get; set;} public long PersonId {get; set;} public virtual Person Person

我在数据库中得到了以下用户类,它有两个关系,其中Profile可以为null

public class User
{
  //...

  public string Sign {get; set;}

  public long? ProfileId {get; set;}
  public virtual Profile Profile {get; set;}

  public long PersonId {get; set;}
  public virtual Person Person { get; set;}

}
我正在尝试搜索具有X符号属性的用户。所以我要这样做:

var users = Context.Users.Where(u => String.Compare(u.Sign, X) == 0).ToList();
直到这一点起作用。但是我需要在这个搜索中包括Profile和Person,当我使用
include()
方法时,对于Profile为null的用户,它会崩溃(用户不包括Profile为null的用户)

var users = Context.Users.Include("Profile").Include("Person").Where(u => String.Compare(u.Sign, X) == 0).ToList(); //stopedworking (users do not include who has Profile null) 
我怎样才能做到这一点

已更新
添加虚拟引用和Id引用,忘记将其放入。

包括system.data.entity,它使您能够使用而不是

顺便说一下,您的查询会选择完整的用户和完整的配置文件,如果您只计划使用几个属性,这将浪费处理能力。在这种情况下,我建议使用select:

var result = dbContext.Users
    .Where(user => user.Sign == X)
    .Select(user => new
    {   // select only the properties you'll use after the query
        ...

        // from the Profile, select only the properties you'll use after the query
        Profiles = user.Profile.Select(profile => new
        {
             ...
        }
    });

从表面上看,语法似乎一切正常。查看
用户
类,使
配置文件
个人
虚拟有什么作用吗?什么是“崩溃”和“停止工作”?伙计们,拜托,当你们想让我们修复你们的错误时,你们能提供包括堆栈跟踪和其他所有内容的错误吗?@Adamhuldsworth我忘了把它放在这里,但它确实有。TimSchmelter并没有堆栈跟踪,只是查询更改的结果。
var result = dbContext.Users
    .Where(user => user.Sign == X)
    .Select(user => new
    {   // select only the properties you'll use after the query
        ...

        // from the Profile, select only the properties you'll use after the query
        Profiles = user.Profile.Select(profile => new
        {
             ...
        }
    });