public void Can_remove_foreign_keys() { var customerType = new EntityType(typeof(Customer), new Model()); var customerKey = customerType.GetOrAddKey(customerType.GetOrAddProperty(Customer.IdProperty)); var orderType = new EntityType(typeof(Order), new Model()); var customerFk1 = orderType.GetOrAddProperty(Order.CustomerIdProperty); var customerFk2 = orderType.GetOrAddProperty("IdAgain", typeof(int), shadowProperty: true); Assert.Equal( Strings.ForeignKeyNotFound("{'" + Order.CustomerIdProperty.Name + "'}", typeof(Order).FullName), Assert.Throws<ModelItemNotFoundException>(() => orderType.GetForeignKey(customerFk1)).Message); Assert.Null(orderType.RemoveForeignKey(new ForeignKey(new[] { customerFk2 }, customerKey))); var fk1 = orderType.AddForeignKey(customerFk1, customerKey); var fk2 = orderType.AddForeignKey(customerFk2, customerKey); Assert.Equal(new[] { fk1, fk2 }, orderType.ForeignKeys.ToArray()); Assert.Same(fk1, orderType.RemoveForeignKey(fk1)); Assert.Null(orderType.RemoveForeignKey(fk1)); Assert.Equal( Strings.ForeignKeyNotFound("{'" + Order.CustomerIdProperty.Name + "'}", typeof(Order).FullName), Assert.Throws<ModelItemNotFoundException>(() => orderType.GetForeignKey(customerFk1)).Message); Assert.Equal(new[] { fk2 }, orderType.ForeignKeys.ToArray()); Assert.Same(fk2, orderType.RemoveForeignKey(new ForeignKey(new[] { customerFk2 }, customerKey))); Assert.Empty(orderType.ForeignKeys); }
public void Can_get_or_add_a_foreign_key() { var customerType = new EntityType(typeof(Customer), new Model()); var idProperty = customerType.GetOrAddProperty(Customer.IdProperty); var customerKey = customerType.GetOrAddKey(idProperty); var orderType = new EntityType(typeof(Order), new Model()); var customerFk1 = orderType.GetOrAddProperty(Order.CustomerIdProperty); var customerFk2 = orderType.GetOrAddProperty("IdAgain", typeof(int), shadowProperty: true); var fk1 = orderType.AddForeignKey(customerFk1, customerKey); var fk2 = orderType.GetOrAddForeignKey(customerFk2, customerKey); Assert.NotNull(fk2); Assert.NotEqual(fk1, fk2); Assert.Same(fk2, orderType.GetForeignKey(customerFk2)); Assert.Same(fk2, orderType.FindForeignKey(customerFk2)); Assert.Equal(new[] { fk1, fk2 }, orderType.ForeignKeys.ToArray()); Assert.Same(fk2, orderType.GetOrAddForeignKey(customerFk2, customerKey)); Assert.Equal(new[] { fk1, fk2 }, orderType.ForeignKeys.ToArray()); }