CodeFirst体验之且行且珍惜
CodeFirst作為一種新的開發理念和方式,EF ?Code-First相對于MVC中的DataFirst,ModelFirst確實開發效率確實高點,至少數據庫建表這一塊,直接用類映射到數據中,標記在前面都是看的愉悅和方便,理論知識不是很擅長,還是寫寫實踐吧,個人的學習的一點分享~
簡單點建立就是學生和學校,一對一的對應關系
1.建立Model和繼承自DbContext的類MyContext
public class MyContext:DbContext{public MyContext(): base("name=MyCodeFirst"){ }public DbSet<Student> Students { get; set; }public DbSet<School> Schools { get; set; }}public class Student{public int Id { get; set; }public string StuName { get; set; }public int Age { get; set; }public School School { get; set; }}public class School{public int Id { get; set; }public string SchoolName { get; set; }public string Address { get; set; }}?
2.在APP.Config配置文件中配置數據庫連接字符串,默認的連接的是localDB數據中,不是很習慣使用~
?
第一個對應的MyContext中的name的名字,第二個是要生成的數據庫的名字,訪問數據的驅動名稱.
3.關鍵一步----寫程序,其實就三句話~
?
static void Main(string[] args){MyContext dbConext = new MyContext();var student=new Student(){StuName="keso",Age=24,School=new School(){SchoolName="農大",Address="江西"}};dbConext.Students.Add(student);dbConext.SaveChanges();Console.WriteLine("CodeFirst體驗成功~");Console.ReadLine();}4.最終的結果:
5.以上一步步的進行下去應該是沒有問題的,如果Model中Student加一個屬性Height會怎么樣呢?
這個時候我們應該做的事情就是數據遷移了,聽上去感覺很吊的樣子,英文是Migrations,其實操作起來就是幾行命令~
在VS2012工具→庫程序包管理器→程序包管理器控制臺
輸入三個命令:
1)Enable-Migrations ?按下enter鍵之后就會掃描數據中所有的上下文,可以選中其中的一個就行遷移,我寫的Demo就一個上下文,使用這個命令沒問題
如果有多個的話可以 使用 ?Enable-Migrations -ContentType
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?namespace...上下文名稱
2)第一步做完之后只需要會生成一個文件夾,有兩個文件,一個是根據時間命名繼承自DbMigration的初始文件,第二個就是Configuration配置文件,需要執行一個命令
? ?Add-Migration(注意這個沒有s) AddHeight(這個可以自己命名)?
3)最后執行的一個命令 ?Update-Database
執行完之后就可以隨便更改模型映射到數據庫中.看下結果吧:
關于CodeFirst這個來說,有些用的CTP5這個框架,參考過的文章,不過發現一個很多,很多博客園上的CodeFirst的文章就是原版的Msdn的介紹內容,感覺有點失望.
http://msdn.microsoft.com/zh-cn/gg981915
http://www.cnblogs.com/zhanghonjiang2011/archive/2012/04/26/2471528.html
http://blogs.msdn.com/b/jason_zander/archive/2012/07/30/entity-framework-code-first-asp-net-web-api.aspx
http://msdn.microsoft.com/zh-CN/data/jj193542
都這么晚了,妹子都睡了,我臉還沒洗,隨機分享一個其他的CodeFirst的內容DevExpress中使用CodeFirst的方式,以前的筆記:
class?Program ??? { ????????static?void?Main(?string[] args) ??????? { ????????????Session.DefaultSession.ConnectionString =?"Data Source=.;Initial Catalog=XPOTest;Integrated Security=true"; ????????????//一對多的保存關系 ????????????User?user =?new?User(); ??????????? user.FirstName =?"思思"?; ??????????? user.LastName =?"李"?; ? ????????????Address?a1 =?new?Address(); ??????????? a1.Local =?"廣西省"?; ? ????????????Address?a2 =?new?Address(); ??????????? a2.Local =?"桂林市"?; ? ??????????? user.Addresses.Add(a1); ??????????? user.Addresses.Add(a2); ??????????? user.Save(); ????????????Console.WriteLine(?"有些東西結束就就真的結束啦?,是不可以挽回的?"); ????????????Console.ReadKey(); ??????? } ??? } ????class?User?:?XPObject ??? { ????????public?string?FirstName; ????????public?string?LastName; ??????? [?Association("User-Address"?,typeof?(Address?)),Aggregated?] ????????public?XPCollection?Addresses ??????? { ????????????get ??????????? { ????????????????return?GetCollection(?"Addresses"); ??????????? } ??????? } ??? } ????class?Address?:?XPObject ??? { ???????public?string?Local; ?????? [?Association("User-Address"?)] ???????public?User?User; ??? }最終生成的結果圖如下所示,添加之后自動保存了Address的數據:
這個屬于隨機附贈的,需要安裝一下DevExpress的程序,然后在項目中就可以飲用Dev的程序集,就可以繼承XPOObject,類似于微軟現在的DbContext.轉載于:https://www.cnblogs.com/xiaofeixiang/p/3614999.html
總結
以上是生活随笔為你收集整理的CodeFirst体验之且行且珍惜的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fzu 2139 久违的月赛之二
- 下一篇: c#实现数据集合转换为csv文本