/// <summary> /// 将数据实体对象保存至数据库。 /// 如果数据库中被判定存在该记录,则进行 Update 操作,否则进行 Insert 操作。 /// </summary> /// <typeparam name="TEntity"></typeparam> /// <param name="_this"></param> /// <param name="entity"></param> public static void AddOrUpdate <TEntity>(this IDbSet <TEntity> _this, TEntity entity) where TEntity : class { DbSetMigrationsExtensions.AddOrUpdate <TEntity>(_this, entity); }
/// <summary> /// 批量将一组 EF 数据实体对象保存至数据库。 /// 针对集合中的每个数据实体对象,如果数据库中被判定存在该记录,则进行 Update 操作,否则进行 Insert 操作。 /// </summary> /// <typeparam name="TEntity"></typeparam> /// <param name="_this"></param> /// <param name="entities"></param> public static void AddOrUpdateRange <TEntity>(this IDbSet <TEntity> _this, IEnumerable <TEntity> entities) where TEntity : class { DbSetMigrationsExtensions.AddOrUpdate <TEntity>(_this, entities.ToArray()); }
protected override void Seed(NorthwindContext context) { if (!context.Database.Exists()) { return; } ////Task 1 Seeding ////Task 3 Seeding if (!context.Categories.Any()) { Category[] categories = { new Category() { CategoryName = "Electronic", Description = "Description conserning electric devices" }, new Category() { CategoryName = "Food", Description = "Food description" }, new Category() { CategoryName = "Shoes", Description = "Shoes description" }, }; DbSetMigrationsExtensions.AddOrUpdate(context.Categories, categories); context.SaveChanges(); } //// if (!context.Products.Any()) { Product[] products = { new Product() { ProductName = "Nike Revolution U4", UnitPrice = 90, UnitsOnOrder = 15, UnitsInStock = 100, ReorderLevel = 3, Discontinued = false, CategoryID = 3 }, new Product() { ProductName = "FILA", UnitPrice = 160, UnitsOnOrder = 23, UnitsInStock = 124, ReorderLevel = 4, Discontinued = false, CategoryID = 3 }, new Product() { ProductName = "Asus Vivo Book", UnitPrice = 660, UnitsOnOrder = 13, UnitsInStock = 65, ReorderLevel = 2, Discontinued = false, CategoryID = 1 } }; DbSetMigrationsExtensions.AddOrUpdate(context.Products, products); context.SaveChanges(); } if (!context.Customers.Any()) { Customer[] customers = { new Customer() { CustomerID = "25", ContactName = "Jone Mill", CompanyName = "ABC", EstablishDate = DateTime.Now }, new Customer() { CustomerID = "38", ContactName = "Polly Sebas", CompanyName = "XYZ", EstablishDate = DateTime.Now } }; DbSetMigrationsExtensions.AddOrUpdate(context.Customers, customers); context.SaveChanges(); } if (!context.Employees.Any()) { Employee[] employees = { new Employee() { FirstName = "Mark", LastName = "Levi" }, new Employee() { FirstName = "Fillip", LastName = "Blank" }, new Employee() { FirstName = "Polly", LastName = "Adams" } }; DbSetMigrationsExtensions.AddOrUpdate(context.Employees, employees); context.SaveChanges(); } if (!context.Orders.Any()) { Order[] orders = { new Order() { CustomerID = "25", EmployeeID = 1 }, new Order() { CustomerID = "25", EmployeeID = 1 }, new Order() { CustomerID = "38", EmployeeID = 2 } }; DbSetMigrationsExtensions.AddOrUpdate(context.Orders, orders); context.SaveChanges(); } if (!context.OrderDetails.Any()) { OrderDetail[] orderDetails = { new OrderDetail() { OrderID = 1, ProductID = 2, UnitPrice = 100, Quantity = 23, Discount = 12 }, new OrderDetail() { OrderID = 2, ProductID = 1, UnitPrice = 33, Quantity = 2, Discount = 1 }, new OrderDetail() { OrderID = 3, ProductID = 3, UnitPrice = 1, Quantity = 33, Discount = 5 } }; DbSetMigrationsExtensions.AddOrUpdate(context.OrderDetails, orderDetails); context.SaveChanges(); } //// ////Task 3 Seeding if (!context.Regions.Any()) { Region[] regions = { new Region() { RegionDescription = "West" }, new Region() { RegionDescription = "South" } }; DbSetMigrationsExtensions.AddOrUpdate(context.Regions, regions); context.SaveChanges(); } if (!context.Territories.Any()) { Territory[] territories = { new Territory() { TerritoryID = "1", TerritoryDescription = "TER 1", RegionID = 1 }, new Territory() { TerritoryID = "2", TerritoryDescription = "TER 2", RegionID = 2 } }; DbSetMigrationsExtensions.AddOrUpdate(context.Territories, territories); context.SaveChanges(); } //// base.Seed(context); }