Ich habe eine LINQ-Abfrage, die in einem EF 6 (Code First) -Projekt funktioniert. Jetzt habe ich den Code EF 7 migriert, und diese Abfrage wirft nun eine Ausnahme: Argument: Anwesen ‚Int32 ID‘ nicht für TypLINQ Abfrage mit zwei Joins, die in EF 6 funktionierte gibt Fehler in EF 7
die Abfrage ‚X.Models.Domain.MadeChoice‘ definiert ist:
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;
Die MadeChoice Klasse:
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; }
}
Die Zimmerklasse:
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>();
}
}
Die Residieren nce class:
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>();
}
}
Ursprünglich war die ID nicht virtuell, hatte aber keinen Einfluss auf den Fehler. Die Datenbank sieht wie in EF 6 aus. Die Beziehungen sind eins zu viele. Ich benutze EF 7.0.0-rc1-final.
Irgendwelche Hinweise?
Vielen Dank im Voraus,
Peter
Vielleicht Zugabe von [Taste] auf dem ID-Eigenschaft helfen? – cdie
@cdie Nein, es hat nicht geholfen :( –
Könnten Sie Ihre Mappings posten? – cdie