public void Can_create_key_from_properties() { var entityType = new Model().AddEntityType(typeof(Customer)); var property1 = entityType.GetOrAddProperty(Customer.IdProperty); var property2 = entityType.GetOrAddProperty(Customer.NameProperty); var key = new Key(new[] { property1, property2 }); Assert.True(new[] { property1, property2 }.SequenceEqual(key.Properties)); }
public void Can_create_unique_index_from_properties() { var entityType = new Model().AddEntityType(typeof(Customer)); var property1 = entityType.GetOrAddProperty(Customer.IdProperty); var property2 = entityType.GetOrAddProperty(Customer.NameProperty); var index = new Index(new[] { property1, property2 }) { IsUnique = true }; Assert.True(new[] { property1, property2 }.SequenceEqual(index.Properties)); Assert.True(index.IsUnique.Value); }
public void Principal_and_depedent_property_count_must_match() { var dependentType = new Model().AddEntityType("D"); var principalType = new Model().AddEntityType("P"); var dependentProperty1 = dependentType.GetOrAddProperty("P1", typeof(int), shadowProperty: true); var dependentProperty2 = dependentType.GetOrAddProperty("P2", typeof(int), shadowProperty: true); principalType.GetOrSetPrimaryKey(principalType.GetOrAddProperty("Id", typeof(int), shadowProperty: true)); Assert.Equal( Strings.ForeignKeyCountMismatch("{'P1', 'P2'}", "D", "{'Id'}", "P"), Assert.Throws<InvalidOperationException>( () => new ForeignKey(new[] { dependentProperty1, dependentProperty2 }, principalType.GetPrimaryKey())).Message); }
public void Can_create_foreign_key() { var entityType = new Model().AddEntityType("E"); var dependentProp = entityType.GetOrAddProperty("P", typeof(int), shadowProperty: true); var principalProp = entityType.GetOrAddProperty("Id", typeof(int), shadowProperty: true); entityType.GetOrSetPrimaryKey(principalProp); var foreignKey = new ForeignKey(new[] { dependentProp }, entityType.GetPrimaryKey()) { IsUnique = true }; Assert.Same(entityType, foreignKey.PrincipalEntityType); Assert.Same(principalProp, foreignKey.PrincipalKey.Properties.Single()); Assert.Same(dependentProp, foreignKey.Properties.Single()); Assert.True(foreignKey.IsUnique.Value); Assert.Same(entityType.GetPrimaryKey(), foreignKey.PrincipalKey); }
public void Validates_properties_from_same_entity() { var entityType1 = new Model().AddEntityType(typeof(Customer)); var entityType2 = new Model().AddEntityType(typeof(Order)); var property1 = entityType1.GetOrAddProperty(Customer.IdProperty); var property2 = entityType2.GetOrAddProperty(Order.NameProperty); Assert.Equal(Strings.InconsistentEntityType("properties"), Assert.Throws<ArgumentException>( () => new Key(new[] { property1, property2 })).Message); }
private static Property CreateProperty() { var entityType = new Model().AddEntityType("MyType"); var property = entityType.GetOrAddProperty("MyProperty", typeof(string), shadowProperty: true); entityType.SqlServer().Table = "MyTable"; return property; }
private static Property CreateProperty() { var entityType = new Model().AddEntityType("Led"); return entityType.GetOrAddProperty("Zeppelin", typeof(Guid), shadowProperty: true); }
private ForeignKey CreateSelfRefFK() { var entityType = new Model().AddEntityType(typeof(SelfRef)); var pk = entityType.GetOrSetPrimaryKey(entityType.GetOrAddProperty("Id", typeof(int))); var fkProp = entityType.GetOrAddProperty("SelfRefId", typeof(int?)); var fk = entityType.AddForeignKey(new[] { fkProp }, pk); fk.IsUnique = true; entityType.AddNavigation("SelfRefPrincipal", fk, pointsToPrincipal: true); entityType.AddNavigation("SelfRefDependent", fk, pointsToPrincipal: false); return fk; }
private ForeignKey CreateOneToManyFK() { var principalEntityType = new Model().AddEntityType(typeof(OneToManyPrincipal)); var pk = principalEntityType.GetOrSetPrimaryKey(principalEntityType.GetOrAddProperty("Id", typeof(int))); var dependentEntityType = new Model().AddEntityType(typeof(OneToManyDependent)); var fkProp = dependentEntityType.GetOrAddProperty("Id", typeof(int)); return dependentEntityType.AddForeignKey(new[] { fkProp }, pk); }
public void Setting_IsRequired_to_false_will_set_all_FK_properties_as_nullable() { var entityType = new Model().AddEntityType("E"); entityType.GetOrSetPrimaryKey(new[] { entityType.GetOrAddProperty("Id1", typeof(int), shadowProperty: true), entityType.GetOrAddProperty("Id2", typeof(string), shadowProperty: true) }); var dependentProp1 = entityType.GetOrAddProperty("P1", typeof(int?), shadowProperty: true); var dependentProp2 = entityType.GetOrAddProperty("P2", typeof(string), shadowProperty: true); var foreignKey = new ForeignKey(new[] { dependentProp1, dependentProp2 }, entityType.GetPrimaryKey()) { IsRequired = false }; Assert.False(foreignKey.IsRequired.Value); Assert.True(dependentProp1.IsNullable.Value); Assert.True(dependentProp2.IsNullable.Value); }
public void IsRequired_false_when_any_part_of_composite_FK_is_nullable() { var entityType = new Model().AddEntityType("E"); entityType.GetOrSetPrimaryKey(new[] { entityType.GetOrAddProperty("Id1", typeof(int), shadowProperty: true), entityType.GetOrAddProperty("Id2", typeof(string), shadowProperty: true) }); var dependentProp1 = entityType.GetOrAddProperty("P1", typeof(int), shadowProperty: true); var dependentProp2 = entityType.GetOrAddProperty("P2", typeof(string), shadowProperty: true); dependentProp2.IsNullable = true; var foreignKey = new ForeignKey(new[] { dependentProp1, dependentProp2 }, entityType.GetPrimaryKey()); Assert.Null(foreignKey.IsRequired); Assert.False(((IForeignKey)foreignKey).IsRequired); dependentProp2.IsNullable = false; Assert.Null(foreignKey.IsRequired); Assert.True(((IForeignKey)foreignKey).IsRequired); }
public void IsRequired_false_for_composite_FK_by_default() { var entityType = new Model().AddEntityType("E"); entityType.GetOrSetPrimaryKey(new[] { entityType.GetOrAddProperty("Id1", typeof(int), shadowProperty: true), entityType.GetOrAddProperty("Id2", typeof(string), shadowProperty: true) }); var dependentProp1 = entityType.GetOrAddProperty("P1", typeof(int), shadowProperty: true); var dependentProp2 = entityType.GetOrAddProperty("P2", typeof(string), shadowProperty: true); var foreignKey = new ForeignKey(new[] { dependentProp1, dependentProp2 }, entityType.GetPrimaryKey()); Assert.Null(foreignKey.IsRequired); Assert.False(((IForeignKey)foreignKey).IsRequired); }
public void IsRequired_and_IsUnique_null_when_dependent_property_nullable_by_default() { var entityType = new Model().AddEntityType("E"); entityType.GetOrSetPrimaryKey(entityType.GetOrAddProperty("Id", typeof(int), shadowProperty: true)); var dependentProp = entityType.GetOrAddProperty("P", typeof(int?), shadowProperty: true); var foreignKey = new ForeignKey(new[] { dependentProp }, entityType.GetPrimaryKey()); Assert.Null(foreignKey.IsRequired); Assert.False(((IForeignKey)foreignKey).IsRequired); Assert.Null(foreignKey.IsUnique); Assert.False(((IForeignKey)foreignKey).IsUnique); }
public void IsRequired_true_when_dependent_property_not_nullable() { var entityType = new Model().AddEntityType("E"); entityType.GetOrSetPrimaryKey(entityType.GetOrAddProperty("Id", typeof(int), shadowProperty: true)); var dependentProp = entityType.GetOrAddProperty("P", typeof(int), shadowProperty: true); dependentProp.IsNullable = false; var foreignKey = new ForeignKey(new[] { dependentProp }, entityType.GetPrimaryKey()); Assert.Null(foreignKey.IsRequired); Assert.True(((IForeignKey)foreignKey).IsRequired); }