Code First模式我们称之为“代码优先”模式,使用Code First模式进行EF开发时开发人员只需要编写对应的数据类(其实就是领域模型的实现过程),然后自动生成数据库。这样设计的好处在于我们可以针对概念模型进行所有数据操作而不必关系数据的存储关系,使我们可以更加自然的采用面向对象的方式进行面向数据的应用程序开发。
下面开工了
创建一个控制台应用程序,创建两个类Orders.cs和OrdersDetail.cs
public class Orders { [Key] //主键 public int Id { get; set; } [StringLength(10)] //长度 public string OrdersCode { get; set; } public int CustomerID { get; set; } public System.DateTime CreateDate { get; set; } public virtual List<OrdersDetail> OrdersDetailList { get; set; } } public class OrdersDetail { [Key] //主键 public int Id { get; set; } public int ProductID { get; set; } [StringLength(100)]//长度 public string ProductName { get; set; } public string UnitPrice { get; set; } public int OrderId { get; set; } public virtual Orders Orders { get; set; } }
下一步,通过NuGet安装EntityFramework。
然后创建OrdersContext.cs
public class OrdersContext : DbContext { public DbSet<Orders> Orders { get; set; } public DbSet<OrdersDetail> OrdersDetail { get; set; } }
客户端调用
class Program { static void Main(string[] args) { var d = DateTime.Now.Date.ToString("yyyyMM"); var ord = new Orders { OrdersCode = "100001", CustomerID = 1, CreateDate = DateTime.Now }; using (var context = new OrdersContext()) { context.Orders.Add(ord); context.SaveChanges(); } Console.WriteLine("OK"); Console.ReadLine(); } }
如果是第一次使用EF Code First的朋友一定会有疑问,我们没有进行任何数据库配置,增加了一条数据通过查询确实保存上了,那么我们的数据到底在哪呢?事实上如果用户不进行数据库配置EF默认会使用“.SQLEXPRESS”数据库实例,我就不截图了。
下面我们使用自己的数据库,需要配置App.config,也就是数据库连接:
<connectionStrings>
<add name="OrdersContext" connectionString="Data Source=.;Database=OrdersDB;UID=sa;PWD=123456;" providerName="System.Data.SqlClient"></add>
</connectionStrings>
在次运行程序:
好了完成,点击下载代码。