PWFraley
PWFraley

Reputation: 1082

Entity Framework Core 2 One to Many created with Fluent API

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

Answers (1)

Pac0
Pac0

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

Related Questions