Advertisement
Guest User

MySql Entity Framework example that produces duplicates

a guest
Dec 20th, 2015
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.73 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel.DataAnnotations;
  4. using System.ComponentModel.DataAnnotations.Schema;
  5. using System.Data.Entity;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9.  
  10. namespace MySqlEFTest
  11. {
  12.     public class Company
  13.     {
  14.         public int Id { get; set; }
  15.         public virtual ICollection<Customer> Customers { get; set; }
  16.     }
  17.  
  18.     public class Customer
  19.     {
  20.         [Key]
  21.         public int Id { get; set; }
  22.         [StringLength(50)]
  23.         public string Name { get; set; }
  24.         public virtual Company Company { get; set; }
  25.         [ForeignKey("Company")]
  26.         public int CompanyId { get; set; }
  27.         public virtual ICollection<Order> Orders { get; set; }
  28.     }
  29.  
  30.     public class Order
  31.     {
  32.         [Key]
  33.         public int Id { get; set; }
  34.         public virtual Customer Customer { get; set; }
  35.         public virtual ICollection<Product> Products { get; set; }
  36.     }
  37.  
  38.     public class OrdersContext : DbContext
  39.     {
  40.         public DbSet<Company> Companies { get; set; }
  41.         public DbSet<Customer> Customers { get; set; }
  42.         public DbSet<Order> Orders { get; set; }
  43.         public DbSet<Product> Products { get; set; }
  44.  
  45.     }
  46.  
  47.     public class Product
  48.     {
  49.         [Key]
  50.         public int Id { get; set; }
  51.         [StringLength(50)]
  52.         public string Name { get; set; }
  53.         public virtual ICollection<Order> Orders { get; set; }
  54.     }
  55.     class Program
  56.     {
  57.         static void Main(string[] args)
  58.         {
  59.             Console.WriteLine("Saving customers");
  60.             List<Customer> customers = new List<Customer>();
  61.             List<Product> products = new List<Product>();
  62.             Company company = new Company();
  63.  
  64.             customers.Add(new Customer()
  65.             {
  66.                 Name = "Some name",
  67.                 Orders = new List<Order>()
  68.                 {
  69.                     new Order()
  70.                     {
  71.  
  72.                         Products = new List<Product>()
  73.                         {
  74.                             new Product() {Name = "Device1" },
  75.                             new Product() {Name ="Device2" },
  76.                             new Product() {Name = "Device3" }
  77.                         }
  78.                        
  79.                     },
  80.                     new Order()
  81.                     {
  82.  
  83.                         Products = new List<Product>()
  84.                         {
  85.                             new Product() {Name = "Device4" },
  86.                             new Product() {Name ="Device5" },
  87.                             new Product() {Name = "Device6" }
  88.                         }
  89.                     }
  90.                 }
  91.             });
  92.  
  93.             customers.Add(new Customer()
  94.             {
  95.                 Name = "Some other guy",
  96.                 Orders = new List<Order>()
  97.                 {
  98.                     new Order()
  99.                     {
  100.  
  101.                         Products = new List<Product>()
  102.                         {
  103.                             new Product() {Name = "Device7" },
  104.                             new Product() {Name ="Device8" },
  105.                             new Product() {Name = "Device9" }
  106.                         }
  107.  
  108.                     },
  109.                     new Order()
  110.                     {
  111.                         Products = new List<Product>()
  112.                         {
  113.                             new Product() {Name = "Device10" },
  114.                             new Product() {Name ="Device11" },
  115.                             new Product() {Name = "Device12" }
  116.                         }
  117.                     }
  118.                 }
  119.             });
  120.  
  121.            
  122.             using (OrdersContext context = new OrdersContext())
  123.             {
  124.                 context.Companies.Add(company);
  125.                 context.SaveChanges();
  126.             }
  127.             using (OrdersContext context = new OrdersContext())
  128.             {
  129.                 var customer = customers[0];
  130.                 customer.Company = company;
  131.                 context.Customers.Add(customer);
  132.                 int recordsSaved = context.SaveChanges();
  133.                 Console.WriteLine(String.Format("First customer saved {0} records", recordsSaved));
  134.             }
  135.             using (OrdersContext context = new OrdersContext())
  136.             {
  137.                 var customer = customers[1];
  138.                 customer.Company = company;
  139.                 context.Customers.Add(customer);
  140.                 int recordsSaved = context.SaveChanges();
  141.                 Console.WriteLine(String.Format("Second customer saved {0} records", recordsSaved));
  142.             }
  143.  
  144.             Console.WriteLine("Completed");
  145.             Console.ReadLine();
  146.         }
  147.     }
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement