那時學EF的時候還沒有Code First,只有DB First,生成的是一個EDMX文件,Code First則沒有這文件,下面直接上代碼吧
數據庫創建以及建表
1、首先我們新建一個新項目,使用Nuget搜索EntityFramework,如果想找到對應的中文包,可以搜索EntityFramework.zh-Hans即可。
本人是話是直接搜索EntityFramework.zh-Hans,這樣會自動把中文包和類庫一起安裝,比較方便。
2、接着建model實體
1 public class Product 2 { 3 public int Id { get; set; } 4 public string Name { get; set; } 5 public string Description { get; set; } 6 }
3、創建一個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 11 protected override void OnModelCreating(DbModelBuilder modelBuilder) 12 { 13 //不使用modelBuilder.Configurations.AddFromAssembly方法則需要逐個添加,如果數量多的話比較麻煩 14 //modelBuilder.Configurations.Add(new OneToMany.Map.ProductMap()); 15 //此方法可以將當前程序集下所有繼承了ComplexTypeConfiguration、EntityTypeConfiguration類型的類添加到注冊器 16 modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly()); 17 base.OnModelCreating(modelBuilder); 18 } 19 }
4、在web.config文件中添加數據庫連接字符串
1 <connectionStrings> 2 <add name="DBConnectionString" connectionString="Data Source=.;Initial Catalog=BasicOpt;Integrated Security=true" providerName="System.Data.SqlClient" /> 3 </connectionStrings>
5、接着創建實體映射
1 public class ProductMap : EntityTypeConfiguration<Product> 2 { 3 public ProductMap() 4 { 5 ToTable("Product"); //指定表明 6 HasKey(p => p.Id); //指定主鍵 7 //指定Name字段在數據庫中列名為DBName、長度500、非空,其他的話可以自己試下 8 Property(p => p.Name).HasColumnName("DBName").HasMaxLength(500).IsRequired(); 9 } 10 }
6、我們寫一個新增實體的操作,讓Code First生成數據庫
1 EntityContext db = new EntityContext(); 2 var product = new Models.Product() { Name = "電磁爐", Description = "電器" }; 3 db.Set<Product>().Add(product); 4 db.SaveChanges();
我們打開數據庫管理工具看下是否有創建數據庫以及新增數據
這樣幾步操作就完成了一個基本的例子,往后文章將介紹下一對一、一對多、多對多關系代碼如何編寫,以及數據庫遷移操作。