I am trying to apply a unique composite constraint, one of the parts of the constraint is a foreign key. The only way I can seem to make it work is to explicitly defined the foreign key in my domain class, which I want to avoid. Is this possible?
The problem and the workaround applies to both HasAlternateKey
and HasIndex
. The solution builds fine, but the constraint is ignored when creating a migration until the shadow property is turned into a real property in the domain class.
This does NOT work (migration ignores this):
entity.HasAlternateKey(e => new { e.Header.Id, e.Version, e.StartDate });
This does work AFTER turning shadow property HeaderID into a real one:
entity.HasAlternateKey(e => new { e.HeaderId, e.Version, e.StartDate });
entity.HasOne(e => e.Header).WithMany().HasForeignKey(f => f.HeaderId);