CodeFirst体验之且行且珍惜
CodeFirst作為一種新的開(kāi)發(fā)理念和方式,EF ?Code-First相對(duì)于MVC中的DataFirst,ModelFirst確實(shí)開(kāi)發(fā)效率確實(shí)高點(diǎn),至少數(shù)據(jù)庫(kù)建表這一塊,直接用類(lèi)映射到數(shù)據(jù)中,標(biāo)記在前面都是看的愉悅和方便,理論知識(shí)不是很擅長(zhǎng),還是寫(xiě)寫(xiě)實(shí)踐吧,個(gè)人的學(xué)習(xí)的一點(diǎn)分享~
簡(jiǎn)單點(diǎn)建立就是學(xué)生和學(xué)校,一對(duì)一的對(duì)應(yīng)關(guān)系
1.建立Model和繼承自DbContext的類(lèi)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配置文件中配置數(shù)據(jù)庫(kù)連接字符串,默認(rèn)的連接的是localDB數(shù)據(jù)中,不是很習(xí)慣使用~
?
第一個(gè)對(duì)應(yīng)的MyContext中的name的名字,第二個(gè)是要生成的數(shù)據(jù)庫(kù)的名字,訪(fǎng)問(wèn)數(shù)據(jù)的驅(qū)動(dòng)名稱(chēng).
3.關(guān)鍵一步----寫(xiě)程序,其實(shí)就三句話(huà)~
?
static void Main(string[] args){MyContext dbConext = new MyContext();var student=new Student(){StuName="keso",Age=24,School=new School(){SchoolName="農(nóng)大",Address="江西"}};dbConext.Students.Add(student);dbConext.SaveChanges();Console.WriteLine("CodeFirst體驗(yàn)成功~");Console.ReadLine();}4.最終的結(jié)果:
5.以上一步步的進(jìn)行下去應(yīng)該是沒(méi)有問(wèn)題的,如果Model中Student加一個(gè)屬性Height會(huì)怎么樣呢?
這個(gè)時(shí)候我們應(yīng)該做的事情就是數(shù)據(jù)遷移了,聽(tīng)上去感覺(jué)很吊的樣子,英文是Migrations,其實(shí)操作起來(lái)就是幾行命令~
在VS2012工具→庫(kù)程序包管理器→程序包管理器控制臺(tái)
輸入三個(gè)命令:
1)Enable-Migrations ?按下enter鍵之后就會(huì)掃描數(shù)據(jù)中所有的上下文,可以選中其中的一個(gè)就行遷移,我寫(xiě)的Demo就一個(gè)上下文,使用這個(gè)命令沒(méi)問(wèn)題
如果有多個(gè)的話(huà)可以 使用 ?Enable-Migrations -ContentType
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?namespace...上下文名稱(chēng)
2)第一步做完之后只需要會(huì)生成一個(gè)文件夾,有兩個(gè)文件,一個(gè)是根據(jù)時(shí)間命名繼承自DbMigration的初始文件,第二個(gè)就是Configuration配置文件,需要執(zhí)行一個(gè)命令
? ?Add-Migration(注意這個(gè)沒(méi)有s) AddHeight(這個(gè)可以自己命名)?
3)最后執(zhí)行的一個(gè)命令 ?Update-Database
執(zhí)行完之后就可以隨便更改模型映射到數(shù)據(jù)庫(kù)中.看下結(jié)果吧:
關(guān)于CodeFirst這個(gè)來(lái)說(shuō),有些用的CTP5這個(gè)框架,參考過(guò)的文章,不過(guò)發(fā)現(xiàn)一個(gè)很多,很多博客園上的CodeFirst的文章就是原版的Msdn的介紹內(nèi)容,感覺(jué)有點(diǎn)失望.
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
都這么晚了,妹子都睡了,我臉還沒(méi)洗,隨機(jī)分享一個(gè)其他的CodeFirst的內(nèi)容DevExpress中使用CodeFirst的方式,以前的筆記:
class?Program ??? { ????????static?void?Main(?string[] args) ??????? { ????????????Session.DefaultSession.ConnectionString =?"Data Source=.;Initial Catalog=XPOTest;Integrated Security=true"; ????????????//一對(duì)多的保存關(guān)系 ????????????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(?"有些東西結(jié)束就就真的結(jié)束啦?,是不可以挽回的?"); ????????????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; ??? }最終生成的結(jié)果圖如下所示,添加之后自動(dòng)保存了Address的數(shù)據(jù):
這個(gè)屬于隨機(jī)附贈(zèng)的,需要安裝一下DevExpress的程序,然后在項(xiàng)目中就可以飲用Dev的程序集,就可以繼承XPOObject,類(lèi)似于微軟現(xiàn)在的DbContext.轉(zhuǎn)載于:https://www.cnblogs.com/xiaofeixiang/p/3614999.html
總結(jié)
以上是生活随笔為你收集整理的CodeFirst体验之且行且珍惜的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: fzu 2139 久违的月赛之二
- 下一篇: c#实现数据集合转换为csv文本
