public static void SetValues(this IPropertyBagEntry propertyBagEntry, Dictionary <IProperty, object> values) { foreach (var value in values) { propertyBagEntry[value.Key] = value.Value; } }
public virtual StateEntry GetPrincipal([NotNull] IPropertyBagEntry dependentEntry, [NotNull] IForeignKey foreignKey) { Check.NotNull(dependentEntry, "dependentEntry"); Check.NotNull(foreignKey, "foreignKey"); var dependentKeyValue = dependentEntry.GetDependentKeyValue(foreignKey); if (dependentKeyValue == EntityKey.NullEntityKey) { return(null); } // TODO: Perf: Add additional indexes so that this isn't a linear lookup var principals = StateEntries.Where( e => e.EntityType == foreignKey.ReferencedEntityType && dependentKeyValue.Equals(e.GetPrincipalKeyValue(foreignKey))).ToArray(); if (principals.Length > 1) { // TODO: Better exception message throw new InvalidOperationException("Multiple matching principals."); } return(principals.FirstOrDefault()); }
public static EntityKey GetPrincipalKeyValue([NotNull] this IPropertyBagEntry propertyBagEntry, [NotNull] IForeignKey foreignKey) { Check.NotNull(propertyBagEntry, "propertyBagEntry"); Check.NotNull(foreignKey, "foreignKey"); return(propertyBagEntry.StateEntry.CreateKey(foreignKey.ReferencedEntityType, foreignKey.ReferencedProperties, propertyBagEntry)); }
public static bool HasDefaultValue([NotNull] this IPropertyBagEntry entry, [NotNull] IProperty property) { Check.NotNull(entry, "entry"); Check.NotNull(property, "property"); return(property.PropertyType.IsDefaultValue(entry[property])); }
public override EntityKey Create(IEntityType entityType, IReadOnlyList<IProperty> properties, IPropertyBagEntry propertyBagEntry) { Check.NotNull(entityType, "entityType"); Check.NotNull(properties, "properties"); Check.NotNull(propertyBagEntry, "propertyBagEntry"); return Create(entityType, properties.Select(p => propertyBagEntry[p]).ToArray()); }
public static EntityKey GetPrimaryKeyValue([NotNull] this IPropertyBagEntry propertyBagEntry) { Check.NotNull(propertyBagEntry, "propertyBagEntry"); var entityType = propertyBagEntry.StateEntry.EntityType; return(propertyBagEntry.StateEntry.CreateKey(entityType, entityType.GetPrimaryKey().Properties, propertyBagEntry)); }
public static bool HasDefaultValue([NotNull] this IPropertyBagEntry entry, [NotNull] IProperty property) { Check.NotNull(entry, "entry"); Check.NotNull(property, "property"); var value = entry[property]; return(value == null || value.Equals(property.PropertyType.GetDefaultValue())); }
public virtual EntityKey CreateKey( [NotNull] IEntityType entityType, [NotNull] IReadOnlyList <IProperty> properties, [NotNull] IPropertyBagEntry propertyBagEntry) { Check.NotNull(entityType, "entityType"); Check.NotEmpty(properties, "properties"); Check.NotNull(propertyBagEntry, "propertyBagEntry"); return(_metadataServices.CreateKey(entityType, properties, propertyBagEntry)); }
public virtual EntityKey CreateKey( [NotNull] IEntityType entityType, [NotNull] IReadOnlyList <IProperty> properties, [NotNull] IPropertyBagEntry propertyBagEntry) { Check.NotNull(entityType, "entityType"); Check.NotEmpty(properties, "properties"); Check.NotNull(propertyBagEntry, "propertyBagEntry"); return(_entityKeyFactorySource .GetKeyFactory(properties) .Create(entityType, properties, propertyBagEntry)); }
public override EntityKey Create(IEntityType entityType, IReadOnlyList <IProperty> properties, IPropertyBagEntry propertyBagEntry) { Check.NotNull(entityType, "entityType"); Check.NotNull(properties, "properties"); Check.NotNull(propertyBagEntry, "propertyBagEntry"); return(Create(entityType, properties.Select(p => propertyBagEntry[p]).ToArray())); }
private KeyValue CreateDependentKeyValue(IPropertyBagEntry propertyBagEntry, IForeignKey foreignKey, ValueType valueType) { var key = propertyBagEntry.GetDependentKeyValue(foreignKey); return(new KeyValue(foreignKey, key, valueType)); }
private KeyValue CreatePrincipalKeyValue(IPropertyBagEntry propertyBagEntry, IForeignKey foreignKey, ValueType valueType) { var key = propertyBagEntry.GetPrincipalKeyValue(foreignKey); return(new KeyValue(foreignKey, key, valueType)); }
public abstract EntityKey Create( [NotNull] IEntityType entityType, [NotNull] IReadOnlyList <IProperty> properties, [NotNull] IPropertyBagEntry propertyBagEntry);
public override EntityKey Create(IEntityType entityType, IReadOnlyList <IProperty> properties, IPropertyBagEntry propertyBagEntry) { Check.NotNull(entityType, "entityType"); Check.NotNull(properties, "properties"); Check.NotNull(propertyBagEntry, "propertyBagEntry"); var value = propertyBagEntry[properties[0]]; return(value == null ? EntityKey.NullEntityKey : new SimpleEntityKey <TKey>(entityType, (TKey)value)); }