Linq不想合作--DbExpressionBinding错误

时间:2012-12-03 13:41:50

标签: asp.net-mvc linq entity-framework ef-code-first

我想从我的数据库中获取一些东西,我需要它是这样的:

var tribunalCase = context.TribunalCases.Where(c => c.Voters.Any(v => v.Voter.UserName == User.Identity.Name))
                    .Select(c => c)
                    .ToList();

但是,当我尝试使用.Any()或.All()时,它会崩溃。我收到以下错误:

  

DbExpressionBinding需要带有集合的输入表达式   与resultType。       参数名称:输入

这是我的模特:

public class Tribunal
    {
        public int Id { get; set; }
        public Account User { get; set; }
        public DateTime Expires { get; set; }
        public Thread Thread { get; set; }
        public int Points { get; set; }
        public String Comment { get; set; }
        public int VotersCount { get; set; }
        public List<Voters> Voters { get; set; }
    }

    public class Voters
    {
        public int Id { get; set; }
        public Account Voter { get; set; }
        public bool Vote { get; set; }
        public Tribunal Tribunal { get; set; }
    }

我的配置如下:

modelBuilder.Entity<Tribunal>()
                .HasOptional(t => t.Voters)
                .WithRequired();

如何解决此错误?

1 个答案:

答案 0 :(得分:2)

配置不正确:Voters是一个集合,因此您应该致电HasMany,而不是HasOptional