本文整理汇总了C#中ModificationCommandTreeGenerator类的典型用法代码示例。如果您正苦于以下问题:C# ModificationCommandTreeGenerator类的具体用法?C# ModificationCommandTreeGenerator怎么用?C# ModificationCommandTreeGenerator使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ModificationCommandTreeGenerator类属于命名空间,在下文中一共展示了ModificationCommandTreeGenerator类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Insert_simple_entity
public void Insert_simple_entity()
{
var modificationFunctionMapping
= TestContext.GetModificationFunctionMapping("Customer");
var commandTrees
= new ModificationCommandTreeGenerator(TestContext.CreateDynamicUpdateModel())
.GenerateInsert(modificationFunctionMapping.Item1.EntityType.FullName);
var convertedTrees
= new DynamicToFunctionModificationCommandConverter(
modificationFunctionMapping.Item1, modificationFunctionMapping.Item2)
.Convert(commandTrees)
.ToList();
var functionSqlGenerator
= new DmlFunctionSqlGenerator(ProviderRegistry.Sql2008_ProviderManifest);
Assert.Equal(
@"insert [dbo].[Customers]([Name])
values (@Name)
declare @CustomerId int
select @CustomerId = [CustomerId]
from [dbo].[Customers]
where @@ROWCOUNT > 0 and [CustomerId] = scope_identity()
select t0.[CustomerId]
from [dbo].[Customers] as t0
where @@ROWCOUNT > 0 and t0.[CustomerId] = @CustomerId",
functionSqlGenerator.GenerateInsert(convertedTrees));
}
示例2: Can_convert_delete_command_trees_when_many_to_many
public void Can_convert_delete_command_trees_when_many_to_many()
{
var model = TestContext.CreateDynamicUpdateModel();
var modificationFunctionMapping
= TestContext.GetAssociationModificationFunctionMapping("OrderThing_Orders");
var converter
= new DynamicToFunctionModificationCommandConverter(
modificationFunctionMapping.Item1, modificationFunctionMapping.Item2);
var modificationCommandTreeGenerator
= new ModificationCommandTreeGenerator(model);
var commandTrees
= modificationCommandTreeGenerator
.GenerateAssociationDelete(modificationFunctionMapping.Item1.AssociationSet.ElementType.FullName);
Assert.Equal(1, commandTrees.Count());
var resultTrees = converter.Convert(commandTrees);
Assert.Equal(1, resultTrees.Count());
var commandTree = resultTrees.First();
Assert.Equal(5, commandTree.Parameters.Count());
Assert.Equal("order_thing_id", commandTree.Parameters.ElementAt(0).Key);
Assert.Equal("Order_Id", commandTree.Parameters.ElementAt(1).Key);
Assert.Equal("Order_Key", commandTree.Parameters.ElementAt(2).Key);
Assert.Equal("teh_codez_bro", commandTree.Parameters.ElementAt(3).Key);
Assert.Equal("Order_Signature", commandTree.Parameters.ElementAt(4).Key);
Assert.NotNull(commandTree.Predicate);
}
开发者ID:christiandpena,项目名称:entityframework,代码行数:35,代码来源:DynamicToFunctionModificationCommandConverterTests.cs
示例3: Can_convert_insert_command_trees_when_table_splitting
public void Can_convert_insert_command_trees_when_table_splitting()
{
var model = TestContext.CreateDynamicUpdateModel();
var modificationFunctionMapping
= TestContext.GetModificationFunctionMapping("JobTask");
var converter
= new DynamicToFunctionModificationCommandConverter(
modificationFunctionMapping.Item1, modificationFunctionMapping.Item2);
var modificationCommandTreeGenerator
= new ModificationCommandTreeGenerator(model);
var commandTrees
= modificationCommandTreeGenerator
.GenerateInsert(modificationFunctionMapping.Item1.EntityType.FullName)
.ToList();
Assert.Equal(1, commandTrees.Count());
var resultTrees = converter.Convert(commandTrees).ToList();
Assert.Equal(1, resultTrees.Count());
var firstCommandTree = (DbUpdateCommandTree)resultTrees.First();
Assert.Equal(2, firstCommandTree.Parameters.Count());
}
开发者ID:Cireson,项目名称:EntityFramework6,代码行数:29,代码来源:DynamicToFunctionModificationCommandConverterTests.cs
示例4: Insert_simple_tph_entity_derived
public void Insert_simple_tph_entity_derived()
{
var modificationFunctionMapping
= TestContext.GetModificationFunctionMapping("Car");
var commandTrees
= new ModificationCommandTreeGenerator(TestContext.CreateDynamicUpdateModel())
.GenerateInsert(modificationFunctionMapping.Item1.EntityType.FullName);
var convertedTrees
= new DynamicToFunctionModificationCommandConverter(
modificationFunctionMapping.Item1, modificationFunctionMapping.Item2)
.Convert(commandTrees)
.OfType<DbInsertCommandTree>()
.ToList();
var functionSqlGenerator
= new DmlFunctionSqlGenerator(new SqlGenerator());
Assert.Equal(
@"INSERT [dbo].[Vehicles]([Name], [Discriminator])
VALUES (@Name, N'Car')
DECLARE @Id int
SELECT @Id = [Id]
FROM [dbo].[Vehicles]
WHERE @@ROWCOUNT > 0 AND [Id] = scope_identity()
SELECT t0.[Id]
FROM [dbo].[Vehicles] AS t0
WHERE @@ROWCOUNT > 0 AND t0.[Id] = @Id",
functionSqlGenerator.GenerateInsert(convertedTrees));
}
示例5: Can_generate_delete_tree_when_self_ref_direct
public void Can_generate_delete_tree_when_self_ref_direct()
{
DbModel model;
using (var context = new WorldContext_Identity())
{
model = context.InternalContext.CodeFirstModel.CachedModelBuilder.BuildDynamicUpdateModel(ProviderRegistry.Sql2008_ProviderInfo);
}
var commandTreeGenerator = new ModificationCommandTreeGenerator(model);
var commandTrees = commandTreeGenerator.GenerateDelete(GetType().Namespace + ".Thing").ToList();
Assert.Equal(1, commandTrees.Count());
}
示例6: Can_generate_dynamic_delete_command_trees_for_many_to_many_association
public void Can_generate_dynamic_delete_command_trees_for_many_to_many_association()
{
var model = TestContext.CreateDynamicUpdateModel();
var commandTreeGenerator
= new ModificationCommandTreeGenerator(model);
var commandTrees
= commandTreeGenerator
.GenerateAssociationDelete(GetType().Namespace + ".FunctionsModel.OrderThing_Orders")
.ToList();
Assert.Equal(1, commandTrees.Count());
var commandTree = commandTrees.First();
Assert.Equal("OrderThingOrder", commandTree.Target.VariableType.EdmType.Name);
Assert.NotNull(commandTree.Predicate);
}
示例7: Insert_tpt_entity_with_concurrency_and_store_generated_values
public void Insert_tpt_entity_with_concurrency_and_store_generated_values()
{
var modificationFunctionMapping
= TestContext.GetModificationFunctionMapping("ExtraSpecialOrder");
var commandTrees
= new ModificationCommandTreeGenerator(TestContext.CreateDynamicUpdateModel())
.GenerateInsert(modificationFunctionMapping.Item1.EntityType.FullName);
var convertedTrees
= new DynamicToFunctionModificationCommandConverter(
modificationFunctionMapping.Item1, modificationFunctionMapping.Item2)
.Convert(commandTrees)
.ToList();
var functionSqlGenerator
= new DmlFunctionSqlGenerator(ProviderRegistry.Sql2008_ProviderManifest);
Assert.Equal(
@"declare @generated_keys table([order_id] int, [Key] uniqueidentifier, [Code] nvarchar(128), [Signature] varbinary(128))
insert [dbo].[Orders]([Code], [Signature], [Name], [Address_Street], [Address_City], [Address_Country_Name], [OrderGroupId], [Customer_CustomerId])
output inserted.[order_id], inserted.[Key], inserted.[Code], inserted.[Signature] into @generated_keys
values (@teh_codez, @Signature, @the_name, @Address_Street, @Address_City, @Address_Country_Name, @OrderGroupId, @Customer_CustomerId)
declare @order_id int, @Key uniqueidentifier
select @order_id = t.[order_id], @Key = t.[Key]
from @generated_keys as g join [dbo].[Orders] as t on g.[order_id] = t.[order_id] and g.[Key] = t.[Key] and g.[Code] = t.[Code] and g.[Signature] = t.[Signature]
where @@ROWCOUNT > 0
insert [dbo].[special_orders]([order_id], [so_key], [Code], [Signature], [OtherCustomer_CustomerId], [OtherAddress_Street], [OtherAddress_City], [OtherAddress_Country_Name])
values (@order_id, @Key, @teh_codez, @Signature, @OtherCustomer_CustomerId, @OtherAddress_Street, @OtherAddress_City, @OtherAddress_Country_Name)
insert [dbo].[xspecial_orders]([xid], [so_key], [Code], [Signature], [TheSpecialist])
values (@order_id, @Key, @teh_codez, @Signature, @TheSpecialist)
select t0.[order_id] as xid, t0.[Key] as key_result, t0.[OrderNo], t0.[RowVersion], t1.[MagicOrderToken], t2.[FairyDust]
from [dbo].[Orders] as t0
join [dbo].[special_orders] as t1 on t1.[order_id] = t0.[order_id] and t1.[so_key] = t0.[Key] and t1.[Code] = t0.[Code] and t1.[Signature] = t0.[Signature]
join [dbo].[xspecial_orders] as t2 on t2.[xid] = t0.[order_id] and t2.[so_key] = t0.[Key] and t2.[Code] = t0.[Code] and t2.[Signature] = t0.[Signature]
where @@ROWCOUNT > 0 and t0.[order_id] = @order_id and t0.[Key] = @Key and t0.[Code] = @teh_codez and t0.[Signature] = @Signature",
functionSqlGenerator.GenerateInsert(convertedTrees));
}
示例8: Diff
public IEnumerable<MigrationOperation> Diff(
XDocument sourceModel,
XDocument targetModel,
ModificationCommandTreeGenerator modificationCommandTreeGenerator = null,
MigrationSqlGenerator migrationSqlGenerator = null)
{
DebugCheck.NotNull(sourceModel);
DebugCheck.NotNull(targetModel);
DbProviderInfo providerInfo;
var storageMappingItemCollection
= sourceModel.GetStorageMappingItemCollection(out providerInfo);
var source
= new ModelMetadata
{
Model = sourceModel,
StoreItemCollection = storageMappingItemCollection.StoreItemCollection,
StorageEntityContainerMapping
= storageMappingItemCollection.GetItems<StorageEntityContainerMapping>().Single(),
ProviderManifest = GetProviderManifest(providerInfo),
ProviderInfo = providerInfo
};
storageMappingItemCollection
= targetModel.GetStorageMappingItemCollection(out providerInfo);
var target
= new ModelMetadata
{
Model = targetModel,
StoreItemCollection = storageMappingItemCollection.StoreItemCollection,
StorageEntityContainerMapping
= storageMappingItemCollection.GetItems<StorageEntityContainerMapping>().Single(),
ProviderManifest = GetProviderManifest(providerInfo),
ProviderInfo = providerInfo
};
return Diff(source, target, modificationCommandTreeGenerator, migrationSqlGenerator);
}
示例9: Can_generate_dynamic_insert_command_trees
public void Can_generate_dynamic_insert_command_trees()
{
var model = TestContext.CreateDynamicUpdateModel();
var commandTreeGenerator
= new ModificationCommandTreeGenerator(model);
var commandTrees
= commandTreeGenerator
.GenerateInsert(GetType().Namespace + ".FunctionsModel.SpecialOrder")
.ToList();
Assert.Equal(2, commandTrees.Count());
var commandTree = commandTrees.First();
Assert.Equal(8, commandTree.SetClauses.Count);
Assert.Equal("Order", commandTree.Target.VariableType.EdmType.Name);
Assert.NotNull(commandTree.Returning);
commandTree = commandTrees.Last();
Assert.Equal(8, commandTree.SetClauses.Count);
Assert.NotNull(commandTree.Returning);
Assert.Equal("special_orders", commandTree.Target.VariableType.EdmType.Name);
commandTrees
= commandTreeGenerator
.GenerateInsert(GetType().Namespace + ".FunctionsModel.Customer")
.ToList();
Assert.Equal(1, commandTrees.Count());
commandTree = commandTrees.Single();
Assert.Equal(1, commandTree.SetClauses.Count);
Assert.Equal("Customer", commandTree.Target.VariableType.EdmType.Name);
Assert.NotNull(commandTree.Returning);
}
示例10: Generate_can_output_alter_procedure_statements
public void Generate_can_output_alter_procedure_statements()
{
var model1 = new TestContext();
var model2 = new TestContext_v2();
var commandTreeGenerator
= new ModificationCommandTreeGenerator(TestContext.CreateDynamicUpdateModel());
var alterProcedureOperation
= new EdmModelDiffer()
.Diff(
model1.GetModel(),
model2.GetModel(),
new Lazy<ModificationCommandTreeGenerator>(() => commandTreeGenerator),
new SqlServerMigrationSqlGenerator())
.OfType<AlterProcedureOperation>()
.Single(c => c.Name == "dbo.Order_Update");
var migrationSqlGenerator = new SqlServerMigrationSqlGenerator();
var sql = migrationSqlGenerator.Generate(new[] { alterProcedureOperation }, "2008").Join(s => s.Sql, Environment.NewLine);
Assert.Equal(
@"ALTER PROCEDURE [dbo].[Order_Update]
@order_id [int],
@key_for_update2 [uniqueidentifier],
@Code [nvarchar](128),
@Signature [varbinary](128),
@Name [nvarchar](max),
@Name_Original [nvarchar](max),
@Address_Street [nvarchar](max),
@Address_City [nvarchar](max),
@Address_CountryOrRegion_Name [nvarchar](max),
@OrderGroupId [int],
@RowVersion_Original [rowversion],
@Customer_CustomerId [int]
AS
BEGIN
UPDATE [dbo].[Orders]
SET [Name] = @Name, [Address_Street] = @Address_Street, [Address_City] = @Address_City, [Address_CountryOrRegion_Name] = @Address_CountryOrRegion_Name, [OrderGroupId] = @OrderGroupId, [Customer_CustomerId] = @Customer_CustomerId
WHERE (((((([order_id] = @order_id) AND ([Key] = @key_for_update2)) AND ([Code] = @Code)) AND ([Signature] = @Signature)) AND (([Name] = @Name_Original) OR ([Name] IS NULL AND @Name_Original IS NULL))) AND (([RowVersion] = @RowVersion_Original) OR ([RowVersion] IS NULL AND @RowVersion_Original IS NULL)))
SELECT t0.[OrderNo], t0.[RowVersion]
FROM [dbo].[Orders] AS t0
WHERE @@ROWCOUNT > 0 AND t0.[order_id] = @order_id AND t0.[Key] = @key_for_update2 AND t0.[Code] = @Code AND t0.[Signature] = @Signature
END", sql);
}
示例11: Generate_can_output_rename_procedure_statements
public void Generate_can_output_rename_procedure_statements()
{
var model1 = new TestContext();
var model2 = new TestContext_v2();
var commandTreeGenerator
= new ModificationCommandTreeGenerator(TestContext.CreateDynamicUpdateModel());
var renameProcedureOperation
= new EdmModelDiffer()
.Diff(
model1.GetModel(),
model2.GetModel(),
new Lazy<ModificationCommandTreeGenerator>(() => commandTreeGenerator),
new SqlServerMigrationSqlGenerator())
.OfType<RenameProcedureOperation>()
.Single();
var migrationSqlGenerator = new SqlServerMigrationSqlGenerator();
var sql = migrationSqlGenerator.Generate(new[] { renameProcedureOperation }, "2008").Join(s => s.Sql, Environment.NewLine);
Assert.Equal(@"EXECUTE sp_rename @objname = N'dbo.Order_Insert', @newname = N'sproc_A', @objtype = N'OBJECT'", sql);
}
示例12: Can_detect_changed_modification_functions_when_column_change_affects_parameter
public void Can_detect_changed_modification_functions_when_column_change_affects_parameter()
{
var commandTreeGenerator
= new ModificationCommandTreeGenerator(TestContext.CreateDynamicUpdateModel());
var targetModel = new TestContext_v2c().GetModel();
var alterProcedureOperations
= new EdmModelDiffer()
.Diff(
new TestContext().GetModel(),
targetModel,
new Lazy<ModificationCommandTreeGenerator>(() => commandTreeGenerator),
new SqlServerMigrationSqlGenerator())
.OfType<AlterProcedureOperation>()
.ToList();
Assert.Equal(2, alterProcedureOperations.Count);
Assert.True(alterProcedureOperations.All(c => c.BodySql.Any()));
Assert.True(alterProcedureOperations
.SelectMany(a => a.Parameters).Any(p => p.Name == "Name" && p.MaxLength == 42));
}
示例13: Generate_can_output_create_procedure_statements
public void Generate_can_output_create_procedure_statements()
{
var modelBuilder = new DbModelBuilder();
var model1 = modelBuilder.Build(ProviderRegistry.Sql2008_ProviderInfo);
var model2 = new TestContext();
var commandTreeGenerator
= new ModificationCommandTreeGenerator(TestContext.CreateDynamicUpdateModel());
var createProcedureOperation
= new EdmModelDiffer()
.Diff(
model1.GetModel(),
model2.GetModel(),
new Lazy<ModificationCommandTreeGenerator>(() => commandTreeGenerator),
new SqlServerMigrationSqlGenerator())
.OfType<CreateProcedureOperation>()
.Single(c => c.Name == "dbo.ExtraSpecialOrder_Update");
var migrationSqlGenerator = new SqlServerMigrationSqlGenerator();
var sql = migrationSqlGenerator.Generate(new[] { createProcedureOperation }, "2008").Join(s => s.Sql, Environment.NewLine);
Assert.Equal(
@"CREATE PROCEDURE [dbo].[ExtraSpecialOrder_Update]
@xid [int],
@key_for_update [uniqueidentifier],
@Code [nvarchar](128),
@Signature [varbinary](128),
@Name [nvarchar](max),
@Name_Original [nvarchar](max),
@Address_Street [nvarchar](max),
@Address_City [nvarchar](max),
@Address_CountryOrRegion_Name [nvarchar](max),
@OrderGroupId [int],
@RowVersion_Original [rowversion],
@OtherAddress_Street [nvarchar](max),
@OtherAddress_City [nvarchar](max),
@OtherAddress_CountryOrRegion_Name [nvarchar](max),
@TheSpecialist [int],
@Customer_CustomerId [int],
@OtherCustomer_CustomerId [int]
AS
BEGIN
UPDATE [dbo].[Orders]
SET [Name] = @Name, [Address_Street] = @Address_Street, [Address_City] = @Address_City, [Address_CountryOrRegion_Name] = @Address_CountryOrRegion_Name, [OrderGroupId] = @OrderGroupId, [Customer_CustomerId] = @Customer_CustomerId
WHERE (((((([order_id] = @xid) AND ([Key] = @key_for_update)) AND ([Code] = @Code)) AND ([Signature] = @Signature)) AND (([Name] = @Name_Original) OR ([Name] IS NULL AND @Name_Original IS NULL))) AND (([RowVersion] = @RowVersion_Original) OR ([RowVersion] IS NULL AND @RowVersion_Original IS NULL)))
UPDATE [dbo].[special_orders]
SET [OtherCustomer_CustomerId] = @OtherCustomer_CustomerId, [OtherAddress_Street] = @OtherAddress_Street, [OtherAddress_City] = @OtherAddress_City, [OtherAddress_CountryOrRegion_Name] = @OtherAddress_CountryOrRegion_Name
WHERE (((([order_id] = @xid) AND ([so_key] = @key_for_update)) AND ([Code] = @Code)) AND ([Signature] = @Signature))
AND @@ROWCOUNT > 0
UPDATE [dbo].[xspecial_orders]
SET [TheSpecialist] = @TheSpecialist
WHERE (((([xid] = @xid) AND ([so_key] = @key_for_update)) AND ([Code] = @Code)) AND ([Signature] = @Signature))
AND @@ROWCOUNT > 0
SELECT t0.[OrderNo] AS order_fu, t0.[RowVersion], t1.[MagicOrderToken], t2.[FairyDust]
FROM [dbo].[Orders] AS t0
JOIN [dbo].[special_orders] AS t1 ON t1.[order_id] = t0.[order_id] AND t1.[so_key] = t0.[Key] AND t1.[Code] = t0.[Code] AND t1.[Signature] = t0.[Signature]
JOIN [dbo].[xspecial_orders] AS t2 ON t2.[xid] = t0.[order_id] AND t2.[so_key] = t0.[Key] AND t2.[Code] = t0.[Code] AND t2.[Signature] = t0.[Signature]
WHERE @@ROWCOUNT > 0 AND t0.[order_id] = @xid AND t0.[Key] = @key_for_update AND t0.[Code] = @Code AND t0.[Signature] = @Signature
END", sql);
}
示例14: Delete_simple_entity
public void Delete_simple_entity()
{
var modificationFunctionMapping
= TestContext.GetModificationFunctionMapping("Customer");
var commandTrees
= new ModificationCommandTreeGenerator(TestContext.CreateDynamicUpdateModel())
.GenerateDelete(modificationFunctionMapping.Item1.EntityType.FullName);
var convertedTrees
= new DynamicToFunctionModificationCommandConverter(
modificationFunctionMapping.Item1, modificationFunctionMapping.Item2)
.Convert(commandTrees)
.OfType<DbDeleteCommandTree>()
.ToList();
var functionSqlGenerator
= new DmlFunctionSqlGenerator(new SqlGenerator());
Assert.Equal(
@"DELETE [dbo].[Customers]
WHERE ([CustomerId] = @CustomerId)",
functionSqlGenerator.GenerateDelete(convertedTrees, null));
}
示例15: Update_simple_entity
public void Update_simple_entity()
{
var modificationFunctionMapping
= TestContext.GetModificationFunctionMapping("Customer");
var commandTrees
= new ModificationCommandTreeGenerator(TestContext.CreateDynamicUpdateModel())
.GenerateUpdate(modificationFunctionMapping.Item1.EntityType.FullName);
var convertedTrees
= new DynamicToFunctionModificationCommandConverter(
modificationFunctionMapping.Item1, modificationFunctionMapping.Item2)
.Convert(commandTrees)
.ToList();
var functionSqlGenerator
= new DmlFunctionSqlGenerator(ProviderRegistry.Sql2008_ProviderManifest);
Assert.Equal(
@"update [dbo].[Customers]
set [Name] = @Name
where ([CustomerId] = @CustomerId)",
functionSqlGenerator.GenerateUpdate(convertedTrees, null));
}