I'm not at my work machine at the moment, so I can't give the exact details, but here's the idea. I'll provide more concrete details tomorrow.
Say you have a model like this
public class PKFKModel_Primary
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int? Id { get; set; }
public PKFKModel_Secondary Secondary { get; set; }
}
public class PKFKModel_Secondary
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
}
And a context configuration like
public IDbSet<PKFKModel_Primary> PKFKModel_Primaries { get; set; }
public IDbSet<PKFKModel_Secondary> PKFKModel_Secondaries { get; set; }
...
modelBuilder.Entity<PKFKModel_Primary>().HasOptional(e => e.Secondary).WithRequired();
And a test such as
var model = new PKFKModel_Primary()
{
Secondary = new PKFKModel_Secondary()
};
using (var context = new TestDbContext())
{
var result = context.UpdateGraph<PKFKModel_Primary>(model, mapping => mapping.OwnedEntity(e => e.Secondary));
context.SaveChanges();
}
Then when SaveChanges is called you will get an error about the Secondary object not being able to have a null ID. Even if you make the Id property of the Secondary object nullable, the same error will be thrown. Having a navigation property on the Secondary object does not make a difference either.
It is fully dependent on the nullability of the Primary object. If the Id property of the Primary object is either
- non-nullable
- set to a specific value
Then this error does not occur and the function works as expected.
Tomorrow when I'm back at work I can double check the code examples I've given here and provide more details.
Thank you!
I'm not at my work machine at the moment, so I can't give the exact details, but here's the idea. I'll provide more concrete details tomorrow.
Say you have a model like this
And a context configuration like
And a test such as
Then when
SaveChangesis called you will get an error about theSecondaryobject not being able to have a null ID. Even if you make theIdproperty of theSecondaryobject nullable, the same error will be thrown. Having a navigation property on theSecondaryobject does not make a difference either.It is fully dependent on the nullability of the
Primaryobject. If theIdproperty of thePrimaryobject is eitherThen this error does not occur and the function works as expected.
Tomorrow when I'm back at work I can double check the code examples I've given here and provide more details.
Thank you!