EF框架之CodeFirst创建数据库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010929604/article/details/43457273

         CodeFirstEntity Framework4.1后新增的一种生成模式,在这种方式下,你不需要在DBMS中创建数据库,也无需在VS中画实体模型了,你要做的仅仅是写写代码即可由ORM框架自动创建模型和数据库,非常的方便和简单(由于开发人员只是编写代码,不关心数据库的具体结构,因此也有人把这种方式叫做CodeOnly).

    下面就以一个简单的例子演示一下如何使用CodeFirst生成数据库.

    一.新建一个项目并添加必要的引用.


    二.编写代码.

          1在项目中添加两个实体类和一个数据上下文类如下图所示


    它们对应的代码如下:

         Customer:

<span style="font-size:18px;">public class Customer
    {
        [Key ]//标识这是对应数据库表的主键
        public int Id { get; set; }

        public string CusName { get; set; }

        public virtual ICollection<OrderInfo> order { get; set; }
    }</span>

         OrderInfo:

<span style="font-size:18px;">public class OrderInfo
    {
        [Key ]//标识这个属性是数据表中的主键
        public int Id { get; set; }

        public string Content { get; set; }
        /// <summary>
        /// 外键约束
        /// </summary>
        public int CustomerId { get; set; }

        public Customer customer { get; set; }
    }</span>

          HotelDBContext:

<span style="font-size:18px;">public class HotelDBContext:DbContext 
    {
        public HotelDBContext()
            :base("name=ConnCodeFirst")
        {
 
        }
        public DbSet<Customer> customer { get; set; }

        public DbSet<OrderInfo> orderInfo { get; set; }
    }</span>

    然后再配置文件App.config中编写数据库的连接字符串,代码如下:

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
	<connectionStrings >
		<add name ="ConnCodeFirst" connectionString ="server=.;uid=sa;pwd=123456;database=CodeFirstDemoDB" providerName ="System.Data.sqlclient"/>
	</connectionStrings>
</configuration></span>

    最后在控制台应用程序的Program类中的主函数中创建数据库,代码如下:

<span style="font-size:18px;"> class Program
    {
        static void Main(string[] args)
        {
            //实例化一个数据上下文对象
            HotelDBContext dbcontext = new HotelDBContext();
            //创建数据库如果不存在的话
            if (dbcontext.Database.CreateIfNotExists())
            {
                Console.WriteLine("数据库已创建成功!");
                Console.Read();
            }
            else { 
                Console.WriteLine ("数据库已经存在,无需创建!");
            }
        }
    }</span>

    三.运行代码,生成数据库

 

    小结一下:CodeFirst相比较而言是一种比较简洁的数据模型生成模式,它很好地支持了以代码为中心的设计理念,代码优先的开发使得开发流程更加的优美,这样你的项目中可以说就不会再需要.edmx那种系统自动生成的DataModel了。

展开阅读全文

没有更多推荐了,返回首页