private ForeignKey CreateSelfRefFK(bool useAltKey = false) { var entityType = new Model().AddEntityType(typeof(SelfRef)); var pk = entityType.GetOrSetPrimaryKey(entityType.GetOrAddProperty("Id", typeof(int))); var fkProp = entityType.GetOrAddProperty("SelfRefId", typeof(int?)); var principalKey = useAltKey ? entityType.GetOrAddKey(entityType.GetOrAddProperty("AltId", typeof(int), shadowProperty: true)) : pk; var fk = entityType.AddForeignKey(new[] { fkProp }, principalKey, entityType); fk.IsUnique = true; entityType.AddNavigation("SelfRefPrincipal", fk, pointsToPrincipal: true); entityType.AddNavigation("SelfRefDependent", fk, pointsToPrincipal: false); return(fk); }
private ForeignKey CreateSelfRefFK(bool useAltKey = false) { var entityType = new Model().AddEntityType(typeof(SelfRef)); var pk = entityType.GetOrSetPrimaryKey(entityType.AddProperty(SelfRef.IdProperty)); var fkProp = entityType.AddProperty(SelfRef.SelfRefIdProperty); var property = entityType.AddProperty("AltId", typeof(int)); var principalKey = useAltKey ? entityType.GetOrAddKey(property) : pk; var fk = entityType.AddForeignKey(new[] { fkProp }, principalKey, entityType); fk.IsUnique = true; fk.HasDependentToPrincipal("SelfRefPrincipal"); fk.HasPrincipalToDependent("SelfRefDependent"); return(fk); }
private ForeignKey CreateSelfRefFK(bool useAltKey = false) { var entityType = new Model().AddEntityType(typeof(SelfRef)); var pk = entityType.GetOrSetPrimaryKey(entityType.AddProperty(SelfRef.IdProperty)); var fkProp = entityType.AddProperty(SelfRef.SelfRefIdProperty); var property = entityType.AddProperty("AltId", typeof(int)); var principalKey = useAltKey ? entityType.GetOrAddKey(property) : pk; var fk = entityType.AddForeignKey(new[] { fkProp }, principalKey, entityType); fk.IsUnique = true; entityType.AddNavigation("SelfRefPrincipal", fk, pointsToPrincipal: true); entityType.AddNavigation("SelfRefDependent", fk, pointsToPrincipal: false); return fk; }
public void Adding_a_foreign_key_throws_if_related_entity_is_from_different_model() { var dependentEntityType = new Model().AddEntityType(typeof(Customer)); var fkProperty = dependentEntityType.GetOrAddProperty(Customer.IdProperty); var principalEntityType = new Model().AddEntityType(typeof(Order)); var idProperty = principalEntityType.GetOrAddProperty(Order.IdProperty); Assert.Equal( CoreStrings.EntityTypeModelMismatch(typeof(Customer).FullName, typeof(Order).FullName), Assert.Throws<InvalidOperationException>(() => dependentEntityType.AddForeignKey(new[] { fkProperty }, principalEntityType.GetOrAddKey(idProperty), principalEntityType)).Message); }