public BinaryExpression GetDiscriminatorPredicate(IEntityType entityType) { if (!EntityType.IsAssignableFrom(entityType)) { return(null); } var concreteEntityTypes = entityType.GetConcreteTypesInHierarchy().ToList(); var discriminatorProperty = entityType.Cosmos().DiscriminatorProperty; var discriminatorPredicate = Equal( new KeyAccessExpression(discriminatorProperty, FromExpression), Constant(concreteEntityTypes[0].Cosmos().DiscriminatorValue, discriminatorProperty.ClrType)); if (concreteEntityTypes.Count > 1) { discriminatorPredicate = concreteEntityTypes .Skip(1) .Select(concreteEntityType => Constant(concreteEntityType.Cosmos().DiscriminatorValue, discriminatorProperty.ClrType)) .Aggregate( discriminatorPredicate, (current, discriminatorValue) => OrElse( Equal(new KeyAccessExpression(discriminatorProperty, FromExpression), discriminatorValue), current)); } return(discriminatorPredicate); }
public DocumentSource(IEntityType entityType, CosmosDatabase database) { _collectionId = entityType.Cosmos().ContainerName; _database = database; _idProperty = entityType.FindProperty(StoreKeyConvention.IdPropertyName); }
public DocumentSource(IEntityType entityType, CosmosDatabase database) { _collectionId = entityType.Cosmos().ContainerName; _entityType = entityType; _database = database; }