本文整理汇总了C#中EarlyLearningCenter.Entry方法的典型用法代码示例。如果您正苦于以下问题:C# EarlyLearningCenter.Entry方法的具体用法?C# EarlyLearningCenter.Entry怎么用?C# EarlyLearningCenter.Entry使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EarlyLearningCenter
的用法示例。
在下文中一共展示了EarlyLearningCenter.Entry方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TrackEntitiesTest
private static void TrackEntitiesTest(
Func<DbSet<Category>, Category, EntityEntry<Category>> categoryAdder,
Func<DbSet<Product>, Product, EntityEntry<Product>> productAdder, EntityState expectedState)
{
using (var context = new EarlyLearningCenter())
{
var category1 = new Category { Id = 1, Name = "Beverages" };
var category2 = new Category { Id = 2, Name = "Foods" };
var product1 = new Product { Id = 1, Name = "Marmite", Price = 7.99m };
var product2 = new Product { Id = 2, Name = "Bovril", Price = 4.99m };
var categoryEntry1 = categoryAdder(context.Categories, category1);
var categoryEntry2 = categoryAdder(context.Categories, category2);
var productEntry1 = productAdder(context.Products, product1);
var productEntry2 = productAdder(context.Products, product2);
Assert.Same(category1, categoryEntry1.Entity);
Assert.Same(category2, categoryEntry2.Entity);
Assert.Same(product1, productEntry1.Entity);
Assert.Same(product2, productEntry2.Entity);
Assert.Same(category1, categoryEntry1.Entity);
Assert.Equal(expectedState, categoryEntry2.State);
Assert.Same(category2, categoryEntry2.Entity);
Assert.Equal(expectedState, categoryEntry2.State);
Assert.Same(product1, productEntry1.Entity);
Assert.Equal(expectedState, productEntry1.State);
Assert.Same(product2, productEntry2.Entity);
Assert.Equal(expectedState, productEntry2.State);
Assert.Same(categoryEntry1.GetInfrastructure(), context.Entry(category1).GetInfrastructure());
Assert.Same(categoryEntry2.GetInfrastructure(), context.Entry(category2).GetInfrastructure());
Assert.Same(productEntry1.GetInfrastructure(), context.Entry(product1).GetInfrastructure());
Assert.Same(productEntry2.GetInfrastructure(), context.Entry(product2).GetInfrastructure());
}
}
示例2: using
[Fact] // Issue #1246
public void Can_set_set_to_Unchanged_with_inconsistent_FK_principal_first_reference_not_fixed_up_with_tracked_FK_match()
{
using (var context = new EarlyLearningCenter(TestHelpers.Instance.CreateServiceProvider()))
{
var category7 = context.Attach(new Category { Id = 7, Products = new List<Product>() }, behavior: GraphBehavior.SingleObject).Entity;
var category = new Category { Id = 1, Name = "Beverages" };
var product = new Product { Id = 1, CategoryId = 7, Name = "Marmite" };
category.Products = new List<Product> { product };
context.Entry(category).State = EntityState.Unchanged;
Assert.Equal(7, product.CategoryId);
Assert.Same(product, category.Products.Single());
Assert.Null(product.Category);
Assert.Empty(category7.Products);
Assert.Equal(EntityState.Unchanged, context.Entry(category).State);
Assert.Equal(EntityState.Detached, context.Entry(product).State);
context.Entry(product).State = EntityState.Unchanged;
Assert.Equal(7, product.CategoryId);
Assert.Same(product, category.Products.Single());
Assert.Same(category7, product.Category);
Assert.Same(product, category7.Products.Single());
Assert.Equal(EntityState.Unchanged, context.Entry(category).State);
Assert.Equal(EntityState.Unchanged, context.Entry(product).State);
}
}
示例3: Can_set_set_to_Unchanged_with_inconsistent_FK_dependent_first_collection_not_fixed_up
[Fact] // Issue #1246
public void Can_set_set_to_Unchanged_with_inconsistent_FK_dependent_first_collection_not_fixed_up()
{
using (var context = new EarlyLearningCenter(TestHelpers.Instance.CreateServiceProvider()))
{
var category = new Category { Id = 1, Name = "Beverages" };
var product = new Product { Id = 1, CategoryId = 7, Name = "Marmite", Category = category };
category.Products = new List<Product>();
context.Entry(product).State = EntityState.Unchanged;
Assert.Equal(7, product.CategoryId);
Assert.Empty(category.Products);
Assert.Same(category, product.Category);
Assert.Equal(EntityState.Detached, context.Entry(category).State);
Assert.Equal(EntityState.Unchanged, context.Entry(product).State);
context.Entry(category).State = EntityState.Unchanged;
Assert.Equal(7, product.CategoryId);
Assert.Empty(category.Products);
Assert.Same(category, product.Category);
Assert.Equal(EntityState.Unchanged, context.Entry(category).State);
Assert.Equal(EntityState.Unchanged, context.Entry(product).State);
}
}
示例4: ChangeStateWithMethod
private void ChangeStateWithMethod(Action<EarlyLearningCenter, Category> action, EntityState initialState, EntityState expectedState)
{
using (var context = new EarlyLearningCenter())
{
var entity = new Category { Id = 1, Name = "Beverages" };
var entry = context.Entry(entity);
entry.State = initialState;
action(context, entity);
Assert.Equal(expectedState, entry.State);
}
}
示例5: Can_attach_with_inconsistent_FK_dependent_first_reference_not_fixed_up
[Fact] // Issue #1246
public void Can_attach_with_inconsistent_FK_dependent_first_reference_not_fixed_up()
{
using (var context = new EarlyLearningCenter(TestHelpers.Instance.CreateServiceProvider()))
{
var category = new Category { Id = 1, Name = "Beverages" };
var product = new Product { Id = 1, CategoryId = 7, Name = "Marmite" };
category.Products = new List<Product> { product };
context.Attach(product, behavior: GraphBehavior.SingleObject);
Assert.Equal(7, product.CategoryId);
Assert.Same(product, category.Products.Single());
Assert.Null(product.Category);
Assert.Equal(EntityState.Detached, context.Entry(category).State);
Assert.Equal(EntityState.Unchanged, context.Entry(product).State);
context.Attach(category, behavior: GraphBehavior.SingleObject);
Assert.Equal(7, product.CategoryId);
Assert.Same(product, category.Products.Single());
Assert.Null(product.Category);
Assert.Equal(EntityState.Unchanged, context.Entry(category).State);
Assert.Equal(EntityState.Unchanged, context.Entry(product).State);
}
}
示例6: TrackEntitiesWithKeyGenerationTest
private static void TrackEntitiesWithKeyGenerationTest(Func<DbContext, TheGu, TheGu> adder)
{
using (var context = new EarlyLearningCenter(TestHelpers.Instance.CreateServiceProvider()))
{
var gu1 = new TheGu { ShirtColor = "Red" };
var gu2 = new TheGu { ShirtColor = "Still Red" };
Assert.Same(gu1, adder(context, gu1));
Assert.Same(gu2, adder(context, gu2));
Assert.NotEqual(default(Guid), gu1.Id);
Assert.NotEqual(default(Guid), gu2.Id);
Assert.NotEqual(gu1.Id, gu2.Id);
var categoryEntry = context.Entry(gu1);
Assert.Same(gu1, categoryEntry.Entity);
Assert.Equal(EntityState.Added, categoryEntry.State);
categoryEntry = context.Entry(gu2);
Assert.Same(gu2, categoryEntry.Entity);
Assert.Equal(EntityState.Added, categoryEntry.State);
}
}
示例7: TrackEntitiesTestNonGeneric
private static void TrackEntitiesTestNonGeneric(
Func<DbContext, object, EntityEntry> categoryAdder,
Func<DbContext, object, EntityEntry> productAdder, EntityState expectedState)
{
using (var context = new EarlyLearningCenter(TestHelpers.Instance.CreateServiceProvider()))
{
var category1 = new Category { Id = 1, Name = "Beverages" };
var category2 = new Category { Id = 2, Name = "Foods" };
var product1 = new Product { Id = 1, Name = "Marmite", Price = 7.99m };
var product2 = new Product { Id = 2, Name = "Bovril", Price = 4.99m };
var categoryEntry1 = categoryAdder(context, category1);
var categoryEntry2 = categoryAdder(context, category2);
var productEntry1 = productAdder(context, product1);
var productEntry2 = productAdder(context, product2);
Assert.Same(category1, categoryEntry1.Entity);
Assert.Same(category2, categoryEntry2.Entity);
Assert.Same(product1, productEntry1.Entity);
Assert.Same(product2, productEntry2.Entity);
Assert.Same(category1, categoryEntry1.Entity);
Assert.Equal(expectedState, categoryEntry2.State);
Assert.Same(category2, categoryEntry2.Entity);
Assert.Equal(expectedState, categoryEntry2.State);
Assert.Same(product1, productEntry1.Entity);
Assert.Equal(expectedState, productEntry1.State);
Assert.Same(product2, productEntry2.Entity);
Assert.Equal(expectedState, productEntry2.State);
Assert.Same(categoryEntry1.GetInfrastructure(), context.Entry(category1).GetInfrastructure());
Assert.Same(categoryEntry2.GetInfrastructure(), context.Entry(category2).GetInfrastructure());
Assert.Same(productEntry1.GetInfrastructure(), context.Entry(product1).GetInfrastructure());
Assert.Same(productEntry2.GetInfrastructure(), context.Entry(product2).GetInfrastructure());
}
}
示例8: Entry_methods_check_arguments
public void Entry_methods_check_arguments()
{
var services = new ServiceCollection()
.AddScoped<IStateManager, FakeStateManager>();
var serviceProvider = TestHelpers.Instance.CreateServiceProvider(services);
using (var context = new EarlyLearningCenter(serviceProvider))
{
Assert.Equal(
"entity",
// ReSharper disable once AssignNullToNotNullAttribute
Assert.Throws<ArgumentNullException>(() => context.Entry(null)).ParamName);
Assert.Equal(
"entity",
// ReSharper disable once AssignNullToNotNullAttribute
Assert.Throws<ArgumentNullException>(() => context.Entry<Random>(null)).ParamName);
}
}
示例9: Can_attach_graph_using_custom_delegate
public void Can_attach_graph_using_custom_delegate()
{
var tracker = new MyTracker(updateExistingEntities: false);
using (var context = new EarlyLearningCenter())
{
var category = new Category
{
Id = 77,
Products = new List<Product>
{
new Product { Id = 77 },
new Product { Id = 0 },
new Product { Id = 78 }
}
};
context.ChangeTracker.TrackGraph(category, tracker.TrackEntity);
Assert.Equal(4, context.ChangeTracker.Entries().Count());
Assert.Equal(EntityState.Unchanged, context.Entry(category).State);
Assert.Equal(EntityState.Unchanged, context.Entry(category.Products[0]).State);
Assert.Equal(EntityState.Added, context.Entry(category.Products[1]).State);
Assert.Equal(EntityState.Unchanged, context.Entry(category.Products[2]).State);
Assert.Equal(77, category.Products[0].Id);
Assert.Equal(777, category.Products[1].Id);
Assert.Equal(78, category.Products[2].Id);
Assert.Same(category, category.Products[0].Category);
Assert.Same(category, category.Products[1].Category);
Assert.Same(category, category.Products[2].Category);
Assert.Equal(category.Id, category.Products[0].CategoryId);
Assert.Equal(category.Id, category.Products[1].CategoryId);
Assert.Equal(category.Id, category.Products[2].CategoryId);
}
}
示例10: KeyValueAttachTest
private static void KeyValueAttachTest(Action<Category, ChangeTracker> tracker, bool expectModified = false)
{
using (var context = new EarlyLearningCenter())
{
var category = new Category
{
Id = 77,
Products = new List<Product>
{
new Product { Id = 77 },
new Product { Id = 0 },
new Product { Id = 78 }
}
};
tracker(category, context.ChangeTracker);
Assert.Equal(4, context.ChangeTracker.Entries().Count());
var nonAddedState = expectModified ? EntityState.Modified : EntityState.Unchanged;
Assert.Equal(nonAddedState, context.Entry(category).State);
Assert.Equal(nonAddedState, context.Entry(category.Products[0]).State);
Assert.Equal(EntityState.Added, context.Entry(category.Products[1]).State);
Assert.Equal(nonAddedState, context.Entry(category.Products[2]).State);
Assert.Equal(77, category.Products[0].Id);
Assert.Equal(1, category.Products[1].Id);
Assert.Equal(78, category.Products[2].Id);
Assert.Same(category, category.Products[0].Category);
Assert.Same(category, category.Products[1].Category);
Assert.Same(category, category.Products[2].Category);
Assert.Equal(category.Id, category.Products[0].CategoryId);
Assert.Equal(category.Id, category.Products[1].CategoryId);
Assert.Equal(category.Id, category.Products[2].CategoryId);
}
}
示例11: Further_graph_traversal_stops_if_an_entity_is_not_attached
public void Further_graph_traversal_stops_if_an_entity_is_not_attached()
{
using (var context = new EarlyLearningCenter())
{
var category = new Category
{
Id = 1,
Products = new List<Product>
{
new Product { Id = 1, Details = new ProductDetails { Id = 1 } },
new Product { Id = 2, Details = new ProductDetails { Id = 2 } },
new Product { Id = 3, Details = new ProductDetails { Id = 3 } }
}
};
context.ChangeTracker.TrackGraph(category, e =>
{
var product = e.Entity as Product;
if (product == null
|| product.Id != 2)
{
e.State = EntityState.Unchanged;
}
});
Assert.Equal(5, context.ChangeTracker.Entries().Count());
Assert.Equal(EntityState.Unchanged, context.Entry(category).State);
Assert.Equal(EntityState.Unchanged, context.Entry(category.Products[0]).State);
Assert.Equal(EntityState.Unchanged, context.Entry(category.Products[0].Details).State);
Assert.Equal(EntityState.Detached, context.Entry(category.Products[1]).State);
Assert.Equal(EntityState.Detached, context.Entry(category.Products[1].Details).State);
Assert.Equal(EntityState.Unchanged, context.Entry(category.Products[2]).State);
Assert.Equal(EntityState.Unchanged, context.Entry(category.Products[2].Details).State);
Assert.Same(category, category.Products[0].Category);
Assert.Same(category, category.Products[1].Category);
Assert.Same(category, category.Products[2].Category);
Assert.Equal(category.Id, category.Products[0].CategoryId);
Assert.Equal(category.Id, category.Products[1].CategoryId);
Assert.Equal(category.Id, category.Products[2].CategoryId);
Assert.Same(category.Products[0], category.Products[0].Details.Product);
Assert.Null(category.Products[1].Details.Product);
Assert.Same(category.Products[2], category.Products[2].Details.Product);
}
}
示例12: Entities_that_are_already_tracked_will_not_get_attached
public void Entities_that_are_already_tracked_will_not_get_attached()
{
using (var context = new EarlyLearningCenter())
{
var existingProduct = context.Attach(new Product { Id = 2, CategoryId = 1 }).Entity;
var category = new Category
{
Id = 1,
Products = new List<Product>
{
new Product { Id = 1 },
existingProduct,
new Product { Id = 3 }
}
};
context.ChangeTracker.TrackGraph(category, e => e.State = EntityState.Modified);
Assert.Equal(4, context.ChangeTracker.Entries().Count());
Assert.Equal(EntityState.Modified, context.Entry(category).State);
Assert.Equal(EntityState.Modified, context.Entry(category.Products[0]).State);
Assert.Equal(EntityState.Unchanged, context.Entry(category.Products[1]).State);
Assert.Equal(EntityState.Modified, context.Entry(category.Products[2]).State);
Assert.Same(category, category.Products[0].Category);
Assert.Same(category, category.Products[1].Category);
Assert.Same(category, category.Products[2].Category);
Assert.Equal(category.Id, category.Products[0].CategoryId);
Assert.Equal(category.Id, category.Products[1].CategoryId);
Assert.Equal(category.Id, category.Products[2].CategoryId);
}
}
示例13: Can_attach_entity_with_one_to_one_parent_and_child
public void Can_attach_entity_with_one_to_one_parent_and_child()
{
using (var context = new EarlyLearningCenter())
{
var details = new ProductDetails { Id = 1, Product = new Product { Id = 1 }, Tag = new ProductDetailsTag { Id = 1 } };
context.ChangeTracker.TrackGraph(details, e => e.State = EntityState.Unchanged);
Assert.Equal(3, context.ChangeTracker.Entries().Count());
Assert.Equal(EntityState.Unchanged, context.Entry(details).State);
Assert.Equal(EntityState.Unchanged, context.Entry(details.Product).State);
Assert.Equal(EntityState.Unchanged, context.Entry(details.Tag).State);
Assert.Same(details, details.Tag.Details);
Assert.Same(details, details.Product.Details);
}
}
示例14: Can_attach_child_with_reference_to_parent
public void Can_attach_child_with_reference_to_parent()
{
using (var context = new EarlyLearningCenter())
{
var product = new Product { Id = 1, Category = new Category { Id = 1 } };
context.ChangeTracker.TrackGraph(product, e => e.State = EntityState.Modified);
Assert.Equal(2, context.ChangeTracker.Entries().Count());
Assert.Equal(EntityState.Modified, context.Entry(product).State);
Assert.Equal(EntityState.Modified, context.Entry(product.Category).State);
Assert.Same(product, product.Category.Products[0]);
Assert.Equal(product.Category.Id, product.CategoryId);
}
}
示例15: SaveChanges_doesnt_call_Database_when_nothing_is_dirty
public void SaveChanges_doesnt_call_Database_when_nothing_is_dirty()
{
var database = new Mock<IDatabase>();
var servicesMock = new Mock<IDatabaseProviderServices>();
servicesMock.Setup(m => m.Database).Returns(database.Object);
servicesMock.Setup(m => m.ModelSource).Returns(new Mock<ModelSource>(new DbSetFinder(), new CoreConventionSetBuilder())
{ CallBase = true }.Object);
servicesMock
.Setup(m => m.ModelValidator)
.Returns(new LoggingModelValidator(new Logger<LoggingModelValidator>(new LoggerFactory())));
var sourceMock = new Mock<IDatabaseProvider>();
sourceMock.Setup(m => m.IsConfigured(It.IsAny<IDbContextOptions>())).Returns(true);
sourceMock.Setup(m => m.GetProviderServices(It.IsAny<IServiceProvider>())).Returns(servicesMock.Object);
var services = new ServiceCollection();
services.AddEntityFramework();
services.AddInstance(sourceMock.Object);
var serviceProvider = services.BuildServiceProvider();
using (var context = new EarlyLearningCenter(serviceProvider, new DbContextOptionsBuilder().Options))
{
context.Entry(new Category { Id = 1 }).State = EntityState.Unchanged;
context.Entry(new Category { Id = 2 }).State = EntityState.Unchanged;
Assert.Equal(2, context.ChangeTracker.Entries().Count());
context.SaveChanges();
}
database.Verify(
s => s.SaveChangesAsync(It.IsAny<IReadOnlyList<InternalEntityEntry>>(), It.IsAny<CancellationToken>()),
Times.Never);
}