Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to seed data with AddOrUpdate with a complex key in EF 4.3

I am trying to seed a development database with some test data.

I have used context.People.AddOrUpdate(p => p.Id, people)); with much success.

I have another table that I need to seed, in which I would not know the primary key.

For example, I would want to AddOrUpdate based on the First and Last names matching.

I am unsure how to write the Expression correctly.

context.People.AddOrUpdate(p => p.FirstName && p.LastName, people);

is obviously incorrect, but I hope it conveys the solution I am looking for.

like image 304
Keith Sirmons Avatar asked Apr 19 '12 18:04

Keith Sirmons


People also ask

What is seed method in Entity Framework?

The Seed method takes the database context object as an input parameter, and the code in the method uses that object to add new entities to the database. To seed data into your database, you need to override the Seed method.

What is seed method in MVC?

This seed() method in configuration. cs is called when you run update-database in the Package Manager Console. It's also called at application startup if you change Entity Framework to use the MigrateDatabaseToLatestVersion database initializer.


2 Answers

Try this:

context.People.AddOrUpdate(p => new { p.FirstName, p.LastName }, people);
like image 103
Ladislav Mrnka Avatar answered Oct 30 '22 03:10

Ladislav Mrnka


If you got Only primitive types or enumeration types are supported in this context. because of using navigation property - consider adding foreign key property directly to the entity (maybe only with getter) and use it as Ladislav Mrnka proposed.

like image 1
lukyer Avatar answered Oct 30 '22 05:10

lukyer