Reputation: 1082
I hope you can help me with this problem:
I have an old database, with two tables in it:
One Datensatz can have 0 to many Kampagnendaten. So far nothing special, but:
Datensatz has the fields: Id Name
Kampagnendaten has the fields: Id Idds Name Value
Idds is the field that holds the Id of the Datensatz, but this field is not defined as a foreign key in the database.
I let EF Core reverse engineer my models and then I modified the created DatabaseContext:
Datensatz:
entity.HasMany<KampagnenDaten>(d => d.KampagnenDatenList).WithOne().HasForeignKey(k => k.Idds);
Kampagnendaten:
entity.HasOne<Datensatz>().WithMany(d => d.KampagnenDatenList).HasForeignKey(k => k.Idds).HasPrincipalKey(d => d.Id);
I also modified the DatensatzModel:
List<KampagnenDaten> KampagnenDaten { get; set; }
Now when I execute the following:
context.Datensatz.Include(d => d.KampagnenDatenList).FirstOrDefault<Datensatz>(d => d.Id == id);
I get a Datensatz which has an array of KampagnenDaten which only includes one element.
How can I get all KampagnenDaten for the Datensatz? (Yes Datensatz has 11 KampagnenDaten in the KampagnenDaten table).
Upvotes: 3
Views: 380
Reputation: 23174
var datensatz = context.Datensatz.Include(d => d.KampagnenDatenList).FirstOrDefault<Datensatz>(d => d.Id == id);
var datensatzId = datensatz.Id;
// what you want. You can add includes if you need.
var kdList = context.KampagnenDaten.Where(k => k.Idds == datensatzId).ToList();
Upvotes: 2