繁体   English   中英

具有在EF 6中工作的两个联接的LINQ查询在EF 7中产生错误

[英]LINQ query with two joins that worked in EF 6 gives error in EF 7

我有一个在EF 6(代码优先)项目中工作的LINQ查询。 现在,我已将代码迁移到EF 7,并且此查询现在引发异常:ArgumentException:未为类型“ X.Models.Domain.MadeChoice”定义属性“ Int32 ID”

查询:

var madeChoices = from res in X.Instance.Residence
                  join room in X.Instance.Room on res.ID equals room.Residence.ID
                  join madeChoice in X.Instance.MadeChoice on room.ID equals madeChoice.Room.ID
                  where res.ID == residence.ID
                  select room.MadeChoices;

MadeChoice类:

public class MadeChoice
{
    public virtual int ID { get; set; }

    [Required]
    public virtual ChoiceGroup Choicegroup { get; set; }

    [Required]
    public virtual Room Room { get; set; }

    [Required]
    public virtual Item Item { get; set; }
}

房间类别:

public class Room
{
    public virtual int ID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }

    public virtual Residence Residence { get; set; }
    public virtual RoomType RoomType { get; set; }
    public virtual List<MadeChoice> MadeChoices { get; set; }

    // Constructors:
    public Room()
    {
        this.MadeChoices = new List<MadeChoice>();
    }
}

居住类:

public class Residence
{
    public int ID { get; set; }
    public string ApartmentNumber { get; set; }

    public static IQueryable<List<MadeChoice>> GetMadeChoices(Residence residence)
    {
        var madeChoices = from res in X.Instance.Residence
                            join room in X.Instance.Room on res.ID equals room.Residence.ID
                            join madeChoice in X.Instance.MadeChoice on room.ID equals madeChoice.Room.ID
                            where res.ID == residence.ID
                            select room.MadeChoices;
        System.Diagnostics.Debug.Write("MadeChoices.Count: ");
        System.Diagnostics.Debug.WriteLine(madeChoices.Count());
        foreach (var madechoice in madeChoices)
        {
            System.Diagnostics.Debug.Write("MadeChoice.Count: ");
            System.Diagnostics.Debug.WriteLine(madechoice.Count());
        }
        return madeChoices;
    }

    // Navigational properties:
    public virtual List<Room> Rooms { get; set; }
    public virtual ResidenceType ResidenceType { get; set; }
    public virtual List<Tenant> Tenants { get; set; }
    public virtual List<PeriodResidenceDeadline> PeriodResidenceDeadline { get; set; }

    // Constructors:
    public Residence()
    {
        this.Rooms = new List<Room>();
        this.Tenants = new List<Tenant>();
        this.PeriodResidenceDeadline = new List<PeriodResidenceDeadline>();
    }
}

最初,该ID不是虚拟的,但不会影响该错误。 该数据库的外观与EF 6相同。关系是一对多的。 我使用EF 7.0.0-rc1-final。

有什么提示吗?

提前致谢,

彼得

正如EF团队所说,EF Core RC1不能处理复杂的子类型(请参阅https://github.com/aspnet/EntityFramework/wiki/Roadmap#in-progress以了解其路线图)

对于查询,这将在EF Core 1.0 RTM版本中进行处理。

同时,您可以使用我在这里列举的一种解决方案: EF Core流利式映射到内部对象属性映射的问题相同)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM