protected RelationalDataStore( [NotNull] StateManager stateManager, [NotNull] DbContextService <IModel> model, [NotNull] EntityKeyFactorySource entityKeyFactorySource, [NotNull] EntityMaterializerSource entityMaterializerSource, [NotNull] ClrCollectionAccessorSource collectionAccessorSource, [NotNull] ClrPropertySetterSource propertySetterSource, [NotNull] RelationalConnection connection, [NotNull] CommandBatchPreparer batchPreparer, [NotNull] BatchExecutor batchExecutor, [NotNull] DbContextService <IDbContextOptions> options, [NotNull] ILoggerFactory loggerFactory) : base(stateManager, model, entityKeyFactorySource, entityMaterializerSource, collectionAccessorSource, propertySetterSource, loggerFactory) { Check.NotNull(connection, "connection"); Check.NotNull(batchPreparer, "batchPreparer"); Check.NotNull(batchExecutor, "batchExecutor"); Check.NotNull(options, "options"); _batchPreparer = batchPreparer; _batchExecutor = batchExecutor; _connection = connection; _options = options.Service; }
protected DataStore( [NotNull] StateManager stateManager, [NotNull] DbContextService <IModel> model, [NotNull] EntityKeyFactorySource entityKeyFactorySource, [NotNull] EntityMaterializerSource entityMaterializerSource, [NotNull] ClrCollectionAccessorSource collectionAccessorSource, [NotNull] ClrPropertySetterSource propertySetterSource, [NotNull] ILoggerFactory loggerFactory) { Check.NotNull(stateManager, "stateManager"); Check.NotNull(model, "model"); Check.NotNull(entityKeyFactorySource, "entityKeyFactorySource"); Check.NotNull(entityMaterializerSource, "entityMaterializerSource"); Check.NotNull(collectionAccessorSource, "collectionAccessorSource"); Check.NotNull(propertySetterSource, "propertySetterSource"); Check.NotNull(loggerFactory, "loggerFactory"); _stateManager = stateManager; _model = model; _entityKeyFactorySource = entityKeyFactorySource; _entityMaterializerSource = entityMaterializerSource; _collectionAccessorSource = collectionAccessorSource; _propertySetterSource = propertySetterSource; _logger = new LazyRef <ILogger>(loggerFactory.Create <DataStore>); }
private static void AccessorTest( string navigationName, Func <MyEntity, IEnumerable <MyOtherEntity> > reader, bool initializeCollections = true) { var accessor = new ClrCollectionAccessorSource(new CollectionTypeFactory()).GetAccessor(CreateNavigation(navigationName)); var entity = new MyEntity(); var value = new MyOtherEntity(); if (initializeCollections) { entity.InitializeCollections(); } Assert.False(accessor.Contains(entity, value)); Assert.DoesNotThrow(() => accessor.Remove(entity, value)); accessor.Add(entity, value); Assert.True(accessor.Contains(entity, value)); Assert.Equal(1, reader(entity).Count()); accessor.Remove(entity, value); Assert.False(accessor.Contains(entity, value)); Assert.Equal(0, reader(entity).Count()); }
public InMemoryDataStore( [NotNull] StateManager stateManager, [NotNull] DbContextService <IModel> model, [NotNull] EntityKeyFactorySource entityKeyFactorySource, [NotNull] EntityMaterializerSource entityMaterializerSource, [NotNull] ClrCollectionAccessorSource collectionAccessorSource, [NotNull] ClrPropertySetterSource propertySetterSource, [NotNull] InMemoryDatabase persistentDatabase, [NotNull] DbContextService <IDbContextOptions> options, [NotNull] ILoggerFactory loggerFactory) : base(stateManager, model, entityKeyFactorySource, entityMaterializerSource, collectionAccessorSource, propertySetterSource, loggerFactory) { Check.NotNull(persistentDatabase, "persistentDatabase"); var storeConfig = options.Service.Extensions .OfType <InMemoryOptionsExtension>() .FirstOrDefault(); _persist = (storeConfig != null ? (bool?)storeConfig.Persist : null) ?? true; _database = new ThreadSafeLazyRef <InMemoryDatabase>( () => _persist ? persistentDatabase : new InMemoryDatabase(loggerFactory)); }
public void Initialization_for_navigation_without_setter_throws() { var accessor = new ClrCollectionAccessorSource(new CollectionTypeFactory()).GetAccessor(CreateNavigation("WithNoSetter")); Assert.Equal( Strings.FormatNavigationNoSetter("WithNoSetter", typeof(MyEntity).FullName), Assert.Throws <InvalidOperationException>(() => accessor.Add(new MyEntity(), new MyOtherEntity())).Message); }
public void Initialization_for_navigation_without_parameterless_constructor_throws() { var accessor = new ClrCollectionAccessorSource(new CollectionTypeFactory()).GetAccessor(CreateNavigation("AsMyUnavailableCollection")); Assert.Equal( Strings.FormatNavigationCannotCreateType("AsMyUnavailableCollection", typeof(MyEntity).FullName, typeof(MyUnavailableCollection).FullName), Assert.Throws <InvalidOperationException>(() => accessor.Add(new MyEntity(), new MyOtherEntity())).Message); }
public void Navigation_is_returned_if_it_implements_IClrCollectionAccessor() { var accessorMock = new Mock <IClrCollectionAccessor>(); var navigationMock = accessorMock.As <INavigation>(); var source = new ClrCollectionAccessorSource(new CollectionTypeFactory()); Assert.Same(accessorMock.Object, source.GetAccessor(navigationMock.Object)); }
public void Delegate_getter_is_cached_by_type_and_property_name() { var entityType = new EntityType(typeof(MyEntity)); var navigation = entityType.AddNavigation(new Navigation(Mock.Of <ForeignKey>(), "AsICollection")); var source = new ClrCollectionAccessorSource(); Assert.Same(source.GetAccessor(navigation), source.GetAccessor(navigation)); }
public ForeignKeyValuePropagator( [NotNull] ClrPropertyGetterSource getterSource, [NotNull] ClrCollectionAccessorSource collectionAccessorSource) { Check.NotNull(getterSource, "getterSource"); Check.NotNull(collectionAccessorSource, "collectionAccessorSource"); _getterSource = getterSource; _collectionAccessorSource = collectionAccessorSource; }
public ForeignKeyValueGenerator( [NotNull] ClrPropertyGetterSource getterSource, [NotNull] ClrCollectionAccessorSource collectionAccessorSource) { Check.NotNull(getterSource, "getterSource"); Check.NotNull(collectionAccessorSource, "collectionAccessorSource"); _getterSource = getterSource; _collectionAccessorSource = collectionAccessorSource; }
public void Delegate_getter_is_cached_by_type_and_property_name() { var entityType = new Model().AddEntityType(typeof(MyEntity)); var otherType = new Model().AddEntityType(typeof(MyOtherEntity)); var foreignKey = otherType.GetOrAddForeignKey(otherType.GetOrAddProperty("MyEntityId", typeof(int), shadowProperty: true), entityType.GetOrSetPrimaryKey(entityType.GetOrAddProperty("Id", typeof(int), shadowProperty: true))); var navigation = entityType.AddNavigation("AsICollection", foreignKey, pointsToPrincipal: false); var source = new ClrCollectionAccessorSource(new CollectionTypeFactory()); Assert.Same(source.GetAccessor(navigation), source.GetAccessor(navigation)); }
public NavigationFixer( [NotNull] StateManager stateManager, [NotNull] ClrCollectionAccessorSource collectionAccessorSource, [NotNull] ClrPropertySetterSource setterSource) { Check.NotNull(stateManager, "stateManager"); Check.NotNull(collectionAccessorSource, "collectionAccessorSource"); Check.NotNull(setterSource, "setterSource"); _stateManager = stateManager; _collectionAccessorSource = collectionAccessorSource; _setterSource = setterSource; }
public FakeRelationalDataStore( StateManager stateManager, DbContextService <IModel> model, EntityKeyFactorySource entityKeyFactorySource, EntityMaterializerSource entityMaterializerSource, ClrCollectionAccessorSource collectionAccessorSource, ClrPropertySetterSource propertySetterSource, RelationalConnection connection, CommandBatchPreparer batchPreparer, BatchExecutor batchExecutor, ILoggerFactory loggerFactory) : base(stateManager, model, entityKeyFactorySource, entityMaterializerSource, collectionAccessorSource, propertySetterSource, connection, batchPreparer, batchExecutor, loggerFactory) { }
public SqlStoreWithBufferReader( StateManager stateManager, DbContextService <IModel> model, EntityKeyFactorySource entityKeyFactorySource, EntityMaterializerSource entityMaterializerSource, ClrCollectionAccessorSource collectionAccessorSource, ClrPropertySetterSource propertySetterSource, SqlServerConnection connection, SqlServerCommandBatchPreparer batchPreparer, SqlServerBatchExecutor batchExecutor, ILoggerFactory loggerFactory) : base(stateManager, model, entityKeyFactorySource, entityMaterializerSource, collectionAccessorSource, propertySetterSource, connection, batchPreparer, batchExecutor, loggerFactory) { }
public SqlServerDataStore( [NotNull] StateManager stateManager, [NotNull] DbContextService <IModel> model, [NotNull] EntityKeyFactorySource entityKeyFactorySource, [NotNull] EntityMaterializerSource entityMaterializerSource, [NotNull] ClrCollectionAccessorSource collectionAccessorSource, [NotNull] ClrPropertySetterSource propertySetterSource, [NotNull] SqlServerConnection connection, [NotNull] SqlServerCommandBatchPreparer batchPreparer, [NotNull] SqlServerBatchExecutor batchExecutor, [NotNull] ILoggerFactory loggerFactory) : base(stateManager, model, entityKeyFactorySource, entityMaterializerSource, collectionAccessorSource, propertySetterSource, connection, batchPreparer, batchExecutor, loggerFactory) { }
public NavigationFixer( [NotNull] DbContextConfiguration configuration, [NotNull] ClrPropertyGetterSource getterSource, [NotNull] ClrPropertySetterSource setterSource, [NotNull] ClrCollectionAccessorSource collectionAccessorSource) { Check.NotNull(configuration, "configuration"); Check.NotNull(getterSource, "getterSource"); Check.NotNull(setterSource, "setterSource"); Check.NotNull(collectionAccessorSource, "collectionAccessorSource"); _configuration = configuration; _getterSource = getterSource; _setterSource = setterSource; _collectionAccessorSource = collectionAccessorSource; }
public NavigationFixer( [NotNull] ClrPropertyGetterSource getterSource, [NotNull] ClrPropertySetterSource setterSource, [NotNull] ClrCollectionAccessorSource collectionAccessorSource, [NotNull] DbContextService <IModel> model) { Check.NotNull(getterSource, "getterSource"); Check.NotNull(setterSource, "setterSource"); Check.NotNull(collectionAccessorSource, "collectionAccessorSource"); Check.NotNull(model, "model"); _getterSource = getterSource; _setterSource = setterSource; _collectionAccessorSource = collectionAccessorSource; _model = model; }
public ForeignKeyValuePropagator( [NotNull] ClrPropertyGetterSource getterSource, [NotNull] ClrCollectionAccessorSource collectionAccessorSource, [NotNull] DbContextService <ValueGeneratorCache> valueGeneratorCache, [NotNull] DbContextService <DataStoreServices> storeServices) { Check.NotNull(getterSource, "getterSource"); Check.NotNull(collectionAccessorSource, "collectionAccessorSource"); Check.NotNull(valueGeneratorCache, "valueGeneratorCache"); Check.NotNull(storeServices, "storeServices"); _getterSource = getterSource; _collectionAccessorSource = collectionAccessorSource; _valueGeneratorCache = valueGeneratorCache; _storeServices = storeServices; }
public QueryBuffer( [NotNull] StateManager stateManager, [NotNull] EntityKeyFactorySource entityKeyFactorySource, [NotNull] EntityMaterializerSource materializerSource, [NotNull] ClrCollectionAccessorSource clrCollectionAccessorSource, [NotNull] ClrPropertySetterSource clrPropertySetterSource) { Check.NotNull(stateManager, "stateManager"); Check.NotNull(entityKeyFactorySource, "entityKeyFactorySource"); Check.NotNull(materializerSource, "materializerSource"); Check.NotNull(clrCollectionAccessorSource, "clrCollectionAccessorSource"); Check.NotNull(clrPropertySetterSource, "clrPropertySetterSource"); _stateManager = stateManager; _entityKeyFactorySource = entityKeyFactorySource; _materializerSource = materializerSource; _clrCollectionAccessorSource = clrCollectionAccessorSource; _clrPropertySetterSource = clrPropertySetterSource; }
private static void AccessorTest(string navigationName, Func <MyEntity, IEnumerable <Random> > reader) { var entityType = new EntityType(typeof(MyEntity)); var navigation = entityType.AddNavigation(new Navigation(Mock.Of <ForeignKey>(), navigationName)); var accessor = new ClrCollectionAccessorSource().GetAccessor(navigation); var entity = new MyEntity(); var value = new Random(); Assert.False(accessor.Contains(entity, value)); Assert.DoesNotThrow(() => accessor.Remove(entity, value)); accessor.Add(entity, value); Assert.True(accessor.Contains(entity, value)); Assert.Equal(1, reader(entity).Count()); accessor.Remove(entity, value); Assert.False(accessor.Contains(entity, value)); Assert.Equal(0, reader(entity).Count()); }
public static EntityServicesBuilder UseClrCollectionAccessorSource([NotNull] this EntityServicesBuilder builder, [NotNull] ClrCollectionAccessorSource source) { Check.NotNull(source, "source"); builder.ServiceCollection.AddInstance(source); return(builder); }