简体   繁体   中英

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:

  • Datensatz
  • Kampagnendaten

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).

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();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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