标签:
上篇介绍了一对一关系,下面介绍下一对多关系代码编写。
1、新建model实体,Product是产品类,Order是订单,一个产品对应多个订单
1 public class Product 2 { 3 public int Id { get; set; } 4 public string Name { get; set; } 5 public string Description { get; set; } 6 7 public virtual ICollection<Order> Orders { get; set; } 8 } 9 10 public class Order 11 { 12 public int Id { get; set; } 13 public int ProductId { get; set; } 14 public DateTime Date { get; set; } 15 public string ShippingAddress { get; set; } 16 17 public virtual Product Product { get; set; } 18 }
2、创建一个EntityContext并继承自DbContext
1 public class EntityContext : DbContext 2 { 3 public EntityContext() 4 : base("name=DBConnectionString") 5 { 6 7 } 8 9 public DbSet<Product> Product { get; set; } 10 public DbSet<Order> Order { get; set; } 11 12 protected override void OnModelCreating(DbModelBuilder modelBuilder) 13 { 14 modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly()); 15 base.OnModelCreating(modelBuilder); 16 } 17 }
3、在web.config文件中添加数据库连接字符串
1 <connectionStrings> 2 <add name="DBConnectionString" connectionString="Data Source=.;Initial Catalog=OneToMany;Integrated Security=true" providerName="System.Data.SqlClient" /> 3 </connectionStrings>
4、接着创建实体映射
1 public class ProductMap : EntityTypeConfiguration<Product> 2 { 3 public ProductMap() 4 { 5 ToTable("Product"); 6 HasKey(p => p.Id); 7 //这个同OrderMap中注释语句效果一样,默认是级联 8 HasMany(p => p.Orders).WithRequired(o => o.Product).HasForeignKey(o => o.ProductId).WillCascadeOnDelete(false); 9 } 10 } 11 12 public class OrderMap : EntityTypeConfiguration<Order> 13 { 14 public OrderMap() 15 { 16 ToTable("Order"); 17 HasKey(o => o.Id); 18 //WillCascadeOnDelete:不使用级联删除 19 //HasRequired(o => o.Product).WithMany(p => p.Orders).HasForeignKey(o => o.ProductId).WillCascadeOnDelete(false); 20 } 21 }
5、我们写一些操作,让Code First生成数据库并验证数据是否新增
1 EntityContext db = new EntityContext(); 2 var product = new Product() { Description = "电器", Name = "电磁炉" }; 3 db.Set<Product>().Add(product); 4 db.SaveChanges(); 5 6 var order = new Order() { Date = DateTime.Now, ProductId = product.Id, ShippingAddress = "江西南昌" }; 7 db.Set<Order>().Add(order); 8 db.SaveChanges(); 9 10 //表连接 11 var list = db.Set<Product>().Include("Orders").ToList();
6、数据库关系图
标签:
原文地址:http://www.cnblogs.com/zuqing/p/5452334.html