Add/insert a new entry containing complex type in Entity Framework 7 Code first

asp.net-core ef-code-first entity-framework-core

Question

I am trying to add a new entry for my object model which has few complex type, using EF 7 code first. But it's not working and throwing exception.

Model:

public class Student 
{
  public int id {get; set;}
  public string Name {get; set;}
  public Address Address {get; set;} -> complex type
}

public class Address 
{
  public int Id {get;set;}
  public string Location {get;set;}
}

Code first code:

class SchoolContext {
DbSet<Student> Students {get; set;}
DbSet<Address> Addresses {get; set;}

}

var context = new SchoolContext();

context.Students.Add(new Student { Id = 1, Name = "XYZ", Address = new Address { Id = 2, Location = "US" } } -> The add method has second parameter which says include dependent objects, and by default it is true.

context.SaveChanges();

This throws exception:

{"The INSERT statement conflicted with the FOREIGN KEY constraint \"FK_Student_Address_AddressId\". The conflict occurred in database \"School\", table \"dbo.Address\", column 'Id'.\r\nThe statement has been terminated."}

This error I think means, the Address object does not exists in database, and if I add the address first and then Student, it works. But this is just too much code, as in my real application objects has many complex types.

Ideally this should work, but it does not.

1
2
3/17/2019 7:56:42 PM

Accepted Answer

Based on this bug report, you should add item before.

It is considered as-designed. At least until RC2.

2
3/7/2016 3:55:37 PM


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow