Entity Framework(code first)数据库初始化

Posted Avatarx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Entity Framework(code first)数据库初始化相关的知识,希望对你有一定的参考价值。

  1. //1.修改模型,重设数据库  
  2. using System.Data.Entity;  
  3.   
  4. Database.SetInitializer<LisknoveDataContext>(newDropCreateDatabaseIfModelChanges<LisknoveDataContext>());  
  5.   
  6. //2.修改模型,重设数据库,并初始化数据  
  7.     using System.Data.Entity;  
  8.   
  9.     public class LisknoveInitializer:DropCreateDatabaseIfModelChanges<LisknoveDataContext>  
  10.     {  
  11.         protected override void Seed(LisknoveDataContext context)  
  12.         {  
  13.             //base.Seed(context);  
  14.             var genre = new List<Genre>  
  15.             {  
  16.                 new Genre{  
  17.                     genreName="Marry"  
  18.                 },  
  19.                 new Genre{  
  20.                     genreName="Weair"  
  21.                 }  
  22.             };  
  23.   
  24.             var material = new List<Material>  
  25.             {  
  26.                 new Material{  
  27.                     materialName="Stone"  
  28.                 },  
  29.                 new Material{  
  30.                     materialName="Water"  
  31.                 },  
  32.                 new Material{  
  33.                     materialName="Flooen"  
  34.                 }  
  35.             };  
  36.   
  37.             var ring = new List<Ring>  
  38.             {  
  39.                 new Ring{  
  40.                     ringName="MakeRing",  
  41.                     price=17.21M,  
  42.                     ringImage="ke.jpg",  
  43.                     Genre=genre.Single(g=>g.genreName=="Marry"),  
  44.                     Material=material.Single(m=>m.materialName=="Water")  
  45.                 },  
  46.                 new Ring{  
  47.                     ringName="ForverRing",  
  48.                     price=15.01M,  
  49.                     ringImage="for.jpg",  
  50.                     Genre=genre.Single(g=>g.genreName=="Marry"),  
  51.                     Material=material.Single(m=>m.materialName=="Flooen")  
  52.                 }  
  53.             };  
  54.   
  55.             //genre.ForEach(g => context.Genres.Add(g));  
  56.             ring.ForEach(r => context.Rings.Add(r));//this way enough add data to database without genre   
  57.                                                                              and material to add to database.  
  58.         }  
  59.     }  
  60.   
  61. Database.SetInitializer<LisknoveDataContext>(new LisknoveInitializer());  
  62. //1.修改模型,重设数据库
    using System.Data.Entity;
    
    Database.SetInitializer<LisknoveDataContext>(newDropCreateDatabaseIfModelChanges<LisknoveDataContext>());
    
    //2.修改模型,重设数据库,并初始化数据
        using System.Data.Entity;
    
        public class LisknoveInitializer:DropCreateDatabaseIfModelChanges<LisknoveDataContext>
        {
            protected override void Seed(LisknoveDataContext context)
            {
                //base.Seed(context);
                var genre = new List<Genre>
                {
                    new Genre{
                        genreName="Marry"
                    },
                    new Genre{
                        genreName="Weair"
                    }
                };
    
                var material = new List<Material>
                {
                    new Material{
                        materialName="Stone"
                    },
                    new Material{
                        materialName="Water"
                    },
                    new Material{
                        materialName="Flooen"
                    }
                };
    
                var ring = new List<Ring>
                {
                    new Ring{
                        ringName="MakeRing",
                        price=17.21M,
                        ringImage="ke.jpg",
                        Genre=genre.Single(g=>g.genreName=="Marry"),
                        Material=material.Single(m=>m.materialName=="Water")
                    },
                    new Ring{
                        ringName="ForverRing",
                        price=15.01M,
                        ringImage="for.jpg",
                        Genre=genre.Single(g=>g.genreName=="Marry"),
                        Material=material.Single(m=>m.materialName=="Flooen")
                    }
                };
    
                //genre.ForEach(g => context.Genres.Add(g));
                ring.ForEach(r => context.Rings.Add(r));//this way enough add data to database without genre 
                                                                                 and material to add to database.
            }
        }
    
    Database.SetInitializer<LisknoveDataContext>(new LisknoveInitializer());



示例
[csharp] view plain copy
 
print?
  1. using System.Collections.Generic;  
  2. public class UserInfo  
  3. {  
  4.     public int UserInfoID { get; set; }  
  5.     public string userName { get; set; }  
  6.     public int age { get; set; }  
  7.     public virtual ICollection<Lesson> lessones { get; set; }  
  8. }  
using System.Collections.Generic;
public class UserInfo
{
    public int UserInfoID { get; set; }
    public string userName { get; set; }
    public int age { get; set; }
    public virtual ICollection<Lesson> lessones { get; set; }
}

 

[csharp] view plain copy
 
print?
  1. using System.Collections;  
  2. using System.Collections.Generic;  
  3. public class Lesson {  
  4.     public int lessonID { get; set; }  
  5.     public string lessonName { get; set; }  
  6.     public string teacherName { get; set; }  
  7.     public virtual UserInfo UserInfo{get;set;}  
  8. }  
using System.Collections;
using System.Collections.Generic;
public class Lesson {
    public int lessonID { get; set; }
    public string lessonName { get; set; }
    public string teacherName { get; set; }
    public virtual UserInfo UserInfo{get;set;}
}

 

[csharp] view plain copy
 
print?
  1. using System.Data.Entity;  
  2. public class TestUsersDB : DbContext  
  3. {  
  4.     public DbSet<UserInfo> UserInfoes { get; set; }  
  5.     public DbSet<Lesson> Lessons{get;set;}  
  6. }  
using System.Data.Entity;
public class TestUsersDB : DbContext
{
    public DbSet<UserInfo> UserInfoes { get; set; }
    public DbSet<Lesson> Lessons{get;set;}
}

 

[csharp] view plain copy
 
print?
    1. using System;  
    2. using System.Collections.Generic;  
    3. using System.Linq;  
    4. using System.Web;  
    5. using System.Web.Mvc;  
    6. using System.Data.Entity;  
    7.   
    8. namespace MvcApplication1.Controllers  
    9. {  
    10.     public class HomeController : Controller  
    11.     {  
    12.         public string Index()  
    13.         {  
    14.             ViewBag.Message = "欢迎使用 ASP.NET MVC!";  
    15.   
    16.             Database.SetInitializer<TestUsersDB>(new DropCreateDatabaseIfModelChanges<TestUsersDB>());  
    17.             var getName = 0;  
    18.             using(TestUsersDB context = new TestUsersDB()){  
    19.             var users = new UserInfo() { userName="xcl",age=23};  
    20.               
    21.             context.UserInfoes.Add(users);  
    22.             context.SaveChanges();  
    23.   
    24.             getName = (from c in context.UserInfoes where c.age > 0 select c.age).First();  
    25.             }  
    26.             return getName.ToString();  
    27.             //return View(getName);  
    28.         }  
    29.   
    30.         public ActionResult About()  
    31.         {  
    32.             return View();  
    33.         }  
    34.     }  
    35. }  

以上是关于Entity Framework(code first)数据库初始化的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework 5.0 Code First全面学习

Entity Framework Code First

转:Entity Framework 5.0 Code First全面学习

ADO.NET Entity Framework -Code Fisrt 开篇

Entity Framework Code First 不允许Entity直接实现接口

Entity Framework Code First 迁移 Migrations