public DataService WithScopedService(DataOptionsBuilder builder)
        {
            var scopedService = new DataService();

            scopedService.UseConfiguration(builder);
            return(scopedService);
        }
예제 #2
0
        private static void Main(string[] args)
        {
            var data = new Data();

            var newConfig = data.Configure().Builder.UseInMemoryDatabase();

            data.UseConfiguration(newConfig);

            // or

            var options = new DataOptionsBuilder();

            options.Builder.UseInMemoryDatabase();

            data = new DataService(options);

            data.Service.Category.UpdateWhere(category => category.Publish == false, category => new Category {
                Publish = true
            }).Wait();
            data.Service.Product.DeleteWhere(product => product.Publish == false).Wait();

            var restrictiveTransaction = new DataOptionsBuilder().Builder.UseSqlServer("connection string", builder => builder.ExecutionStrategy(context =>
            {
                context.Context.Database.BeginTransaction(IsolationLevel.Serializable);
                return(context.Context.Database.CreateExecutionStrategy());
            }));

            using (var isolatedOperation = data.WithScopedService(restrictiveTransaction))
            {
                isolatedOperation.Service.User.DeleteWhere(user => user.Inactive).Wait();
            }

            var observer = Observer.Create <Category>(subscription =>
            {
                subscription.Publish = false;
            });

            data.Service.BulkInsert(data.Service.Category.Where(category => category.Publish), data.Service.CategorySubscription, 10000, 0, 1000, observer).Wait();
            data.Service.ClearCache();
        }
        public void UseConfiguration(DataOptionsBuilder builder)
        {
            _data?.Dispose();

            _data = new EfStoreContext(builder.Build());
        }
 public DataService(DataOptionsBuilder builder)
 {
     _lastOptions = builder.Build();
 }