public ModificationCommand(
            [NotNull] string name,
            [CanBeNull] string schema,
            [NotNull] ParameterNameGenerator parameterNameGenerator,
            [NotNull] Func<IProperty, IRelationalPropertyAnnotations> getPropertyExtensions)
        {
            Check.NotEmpty(name, nameof(name));
            Check.NotNull(parameterNameGenerator, nameof(parameterNameGenerator));
            Check.NotNull(getPropertyExtensions, nameof(getPropertyExtensions));

            TableName = name;
            Schema = schema;
            _parameterNameGenerator = parameterNameGenerator;
            _getPropertyExtensions = getPropertyExtensions;
        }
Ejemplo n.º 2
0
        protected ModificationCommand CreateUpdateCommand(bool isComputed = true, bool concurrencyToken = true)
        {
            var duck      = GetDuckType();
            var entry     = CreateInternalEntryMock(duck).Object;
            var generator = new ParameterNameGenerator();

            var idProperty          = duck.FindProperty(nameof(Duck.Id));
            var nameProperty        = duck.FindProperty(nameof(Duck.Name));
            var quacksProperty      = duck.FindProperty(nameof(Duck.Quacks));
            var computedProperty    = duck.FindProperty(nameof(Duck.Computed));
            var concurrencyProperty = duck.FindProperty(nameof(Duck.ConcurrencyToken));
            var columnModifications = new[]
            {
                new ColumnModification(
                    entry, idProperty, idProperty.TestProvider(), generator.GenerateNext, false, false, true, true),
                new ColumnModification(
                    entry, nameProperty, nameProperty.TestProvider(), generator.GenerateNext, false, true, false, false),
                new ColumnModification(
                    entry, quacksProperty, quacksProperty.TestProvider(), generator.GenerateNext, false, true, false, false),
                new ColumnModification(
                    entry, computedProperty, computedProperty.TestProvider(), generator.GenerateNext, isComputed, false, false, false),
                new ColumnModification(
                    entry, concurrencyProperty, concurrencyProperty.TestProvider(), generator.GenerateNext, false, true, false, concurrencyToken)
            };

            Func <IProperty, IRelationalPropertyAnnotations> func = p => p.TestProvider();
            var commandMock = new Mock <ModificationCommand>(
                "Ducks", Schema, new Func <string>(new ParameterNameGenerator().GenerateNext), func)
            {
                CallBase = true
            };

            commandMock.Setup(m => m.ColumnModifications).Returns(columnModifications);

            return(commandMock.Object);
        }
Ejemplo n.º 3
0
        protected ModificationCommand CreateInsertCommand(bool identityKey = true, bool isComputed = true, bool defaultsOnly = false)
        {
            var duckType     = GetDuckType();
            var stateManager = TestHelpers.CreateContextServices(duckType.Model.FinalizeModel()).GetRequiredService <IStateManager>();
            var entry        = stateManager.GetOrCreateEntry(new Duck());
            var generator    = new ParameterNameGenerator();

            var idProperty          = duckType.FindProperty(nameof(Duck.Id));
            var nameProperty        = duckType.FindProperty(nameof(Duck.Name));
            var quacksProperty      = duckType.FindProperty(nameof(Duck.Quacks));
            var computedProperty    = duckType.FindProperty(nameof(Duck.Computed));
            var concurrencyProperty = duckType.FindProperty(nameof(Duck.ConcurrencyToken));
            var columnModifications = new[]
            {
                new ColumnModification(
                    entry, idProperty, generator.GenerateNext, identityKey, !identityKey, true, false, false, true),
                new ColumnModification(
                    entry, nameProperty, generator.GenerateNext, false, true, false, false, false, true),
                new ColumnModification(
                    entry, quacksProperty, generator.GenerateNext, false, true, false, false, false, true),
                new ColumnModification(
                    entry, computedProperty, generator.GenerateNext, isComputed, false, false, false,
                    true, true),
                new ColumnModification(
                    entry, concurrencyProperty, generator.GenerateNext, false, true, false, false,
                    false, true)
            };

            if (defaultsOnly)
            {
                columnModifications = columnModifications.Where(c => !c.IsWrite).ToArray();
            }

            return(new FakeModificationCommand(
                       "Ducks", Schema, new ParameterNameGenerator().GenerateNext, false, columnModifications));
        }
Ejemplo n.º 4
0
        public void PopulateParameters_creates_parameter_for_condition_ModificationCommand()
        {
            var entry    = CreateEntry(EntityState.Added, generateKeyValues: true);
            var property = entry.EntityType.FindProperty("Id");

            entry.SetTemporaryValue(property, 1);

            var batch = new ModificationCommandBatchFake();
            var parameterNameGenerator = new ParameterNameGenerator();

            batch.AddCommand(
                new FakeModificationCommand(
                    "T1",
                    null,
                    parameterNameGenerator.GenerateNext,
                    true,
                    new List <ColumnModification>
            {
                new ColumnModification(
                    entry,
                    property,
                    property.GetTableColumnMappings().Single().Column,
                    parameterNameGenerator.GenerateNext,
                    property.GetTableColumnMappings().Single().TypeMapping,
                    isRead: false, isWrite: false, isKey: false, isCondition: true,
                    sensitiveLoggingEnabled: true)
            }));

            var storeCommand = batch.CreateStoreCommandBase();

            Assert.Equal(1, storeCommand.RelationalCommand.Parameters.Count);
            Assert.Equal("p0", storeCommand.RelationalCommand.Parameters[0].InvariantName);

            Assert.Equal(1, storeCommand.ParameterValues.Count);
            Assert.Equal(1, storeCommand.ParameterValues["p0"]);
        }
Ejemplo n.º 5
0
        protected ColumnModification[] CreateUpdateOperations(bool computedProperty = true, bool concurrencyToken = true)
        {
            var entry     = new Mock <StateEntry>().Object;
            var generator = new ParameterNameGenerator();

            return(new[]
            {
                new ColumnModification(
                    entry, CreateMockProperty("Id"), generator,
                    isRead: false, isWrite: false, isKey: true, isCondition: true),
                new ColumnModification(
                    entry, CreateMockProperty("Name"), generator,
                    isRead: false, isWrite: true, isKey: false, isCondition: false),
                new ColumnModification(
                    entry, CreateMockProperty("Quacks"), generator,
                    isRead: false, isWrite: true, isKey: false, isCondition: false),
                new ColumnModification(
                    entry, CreateMockProperty("Computed"), generator,
                    isRead: computedProperty, isWrite: false, isKey: false, isCondition: false),
                new ColumnModification(
                    entry, CreateMockProperty("ConcurrencyToken"), generator,
                    isRead: false, isWrite: true, isKey: false, isCondition: concurrencyToken)
            });
        }
 public FakeModificationCommand(
     string name,
     string schema,
     ParameterNameGenerator parameterNameGenerator,
     Func<IProperty, IRelationalPropertyAnnotations> getPropertyExtensions,
     IReadOnlyList<ColumnModification> columnModifications)
     : base(name, schema, parameterNameGenerator, getPropertyExtensions)
 {
     ColumnModifications = columnModifications;
 }
        protected ModificationCommand CreateDeleteCommand(bool concurrencyToken = true)
        {
            var entry = CreateInternalEntryMock().Object;
            var generator = new ParameterNameGenerator();

            var idProperty = CreateMockProperty("Id");
            var concurrencyProperty = CreateMockProperty("ConcurrencyToken");
            var columnModifications = new[]
                {
                    new ColumnModification(
                        entry, idProperty, idProperty.TestProvider(), generator, false, false, true, true),
                    new ColumnModification(
                        entry, concurrencyProperty, concurrencyProperty.TestProvider(), generator, false, false, false, concurrencyToken)
                };

            Func<IProperty, IRelationalPropertyAnnotations> func = p => p.TestProvider();
            var commandMock = new Mock<ModificationCommand>("Ducks", Schema, new ParameterNameGenerator(), func, Mock.Of<IRelationalValueBufferFactoryFactory>()) { CallBase = true };
            commandMock.Setup(m => m.ColumnModifications).Returns(columnModifications);

            return commandMock.Object;
        }
        protected ModificationCommand CreateInsertCommand(bool identityKey = true, bool isComputed = true, bool defaultsOnly = false)
        {
            var entry = CreateInternalEntryMock().Object;
            var generator = new ParameterNameGenerator();

            var idProperty = CreateMockProperty("Id");
            var nameProperty = CreateMockProperty("Name");
            var quacksProperty = CreateMockProperty("Quacks");
            var computedProperty = CreateMockProperty("Computed");
            var concurrencyProperty = CreateMockProperty("ConcurrencyToken");
            var columnModifications = new[]
                {
                    new ColumnModification(
                        entry, idProperty, idProperty.TestProvider(), generator, identityKey, !identityKey, true, false),
                    new ColumnModification(
                        entry, nameProperty, nameProperty.TestProvider(), generator, false, true, false, false),
                    new ColumnModification(
                        entry, quacksProperty, quacksProperty.TestProvider(), generator, false, true, false, false),
                    new ColumnModification(
                        entry, computedProperty, computedProperty.TestProvider(), generator, isComputed, false, false, false),
                    new ColumnModification(
                        entry, concurrencyProperty, concurrencyProperty.TestProvider(), generator, false, true, false, false)
                };

            if (defaultsOnly)
            {
                columnModifications = columnModifications.Where(c => !c.IsWrite).ToArray();
            }

            Func<IProperty, IRelationalPropertyAnnotations> func = p => p.TestProvider();
            var commandMock = new Mock<ModificationCommand>("Ducks", Schema, new ParameterNameGenerator(), func, Mock.Of<IRelationalValueBufferFactoryFactory>()) { CallBase = true };
            commandMock.Setup(m => m.ColumnModifications).Returns(columnModifications);

            return commandMock.Object;
        }
        protected ModificationCommand CreateUpdateCommand(bool isComputed = true, bool concurrencyToken = true)
        {
            var entry = CreateInternalEntryMock().Object;
            var generator = new ParameterNameGenerator();

            var idProperty = CreateMockProperty("Id");
            var nameProperty = CreateMockProperty("Name");
            var quacksProperty = CreateMockProperty("Quacks");
            var computedProperty = CreateMockProperty("Computed");
            var concurrencyProperty = CreateMockProperty("ConcurrencyToken");
            var columnModifications = new[]
                {
                    new ColumnModification(
                        entry, idProperty, idProperty.TestProvider(), generator, false, false, true, true),
                    new ColumnModification(
                        entry, nameProperty, nameProperty.TestProvider(), generator, false, true, false, false),
                    new ColumnModification(
                        entry, quacksProperty, quacksProperty.TestProvider(), generator, false, true, false, false),
                    new ColumnModification(
                        entry, computedProperty, computedProperty.TestProvider(), generator, isComputed, false, false, false),
                    new ColumnModification(
                        entry, concurrencyProperty, concurrencyProperty.TestProvider(), generator, false, true, false, concurrencyToken)
                };

            Func<IProperty, IRelationalPropertyAnnotations> func = p => p.TestProvider();
            var commandMock = new Mock<ModificationCommand>("Ducks", Schema, new ParameterNameGenerator(), func) { CallBase = true };
            commandMock.Setup(m => m.ColumnModifications).Returns(columnModifications);

            return commandMock.Object;
        }