EF開發流程:本人加班寫的EF流程忘記保存了,以下博客也囊括了幾部重要的操作,值得參考
http://www.cnblogs.com/LittleFeiHu/archive/2012/02/20/2359324.html
?
EF4.1包括Code?First和DbContext?API。DbContext?API為EF提供更多的工作方式:Code?First,Database?First和Model?First。
使用DbContext構造函數
1 .?Code?First約定連接
namespace?Magic.Unicorn
{
????public?class?UnicornsContext?:?DbContext
????{
????????public?UnicornsContext()
????????//?C#?will?call?base?class?parameterless?constructor?by?default
????????{
????????}
????}
}
用Magic.Unicorn.UnicornsContext作為數據庫名,在本機上生成該數據庫的連接字符串(SQL?Express)。
?
2.?Code?First指定數據庫名稱的約定連接
public?class?UnicornsContext?:?DbContext
{
????public?UnicornsContext()
????????:?base("UnicornsDatabase")
????{
????}
}
用UnicornsDatabase作為數據庫名,在本機上生成該數據庫的連接字符串(SQL?Express)。
?
3.?Code?First用配置文件中的連接字符串,連接的數據庫還有精簡型的
<connectionStrings>
????<add?name="UnicornsCEDatabase"
?????????providerName="System.Data.SqlServerCe.4.0"
?????????connectionString="Data?Source=Unicorns.sdf"/>
??</connectionStrings>
public?class?UnicornsContext?:?DbContext
{
????public?UnicornsContext()
????????:?base("name=UnicornsCEDatabase")
????{
????}
}
?
4.?Database/Model?First用配置文件中的連接字符
<add?name="Northwind_Entities"?
???connectionString="
??????metadata=res://*/Northwind.csdl|?
???????????????res://*/Northwind.ssdl|?
???????????????res://*/Northwind.msl;?
??????provider=System.Data.SqlClient;?
??????provider?connection?string=?
?????????"Data?Source=.\sqlexpress;?
???????????????Initial?Catalog=Northwind;?
???????????????Integrated?Security=True;?
???????????????MultipleActiveResultSets=True""?
providerName="System.Data.EntityClient"/>?
public?class?NorthwindContext?:?DbContext
{
????public?NorthwindContext()
????????:?base("name=Northwind_Entities")
????{
????}
}
5.?Defining?sets?on?a?derived?context
1)?DbSet屬性:指定集合為Entity類型
2)?IDbSet屬性
3)?只讀set屬性
public?IDbSet<Unicorn>?Unicorns{get{return?Set<Unicorn>();}
6.?利用主鍵查找實體
???DbSet的Find方法,如果用主鍵在上下文中查找不到實體,就會到數據庫中查詢。
???1)通過主鍵查找實體
??????var?unicorn=context.Unicorns.Find(3);//查詢數據庫
??????var?unicornAgain=context.Unicorns.Find(3);//從當前上下文中返回相同的實例(沒有查詢數據庫)
???2)?通過主鍵和外鍵查找實體
??????var?lady?=?context.LadiesInWaiting.Find(3,?"The?EF?Castle");
7.?實體狀態和保存
???EntityState:Added、Unchanged、Modified、Deleted和Detached
???1)?插入一個新的實體到上下文
??????當調用SaveChanges()才能插入到數據庫中。
????var?unicorn?=?new?Unicorn?{?Name?=?"Franky",?PrincessId?=?1};
????context.Unicorns.Add(unicorn);//添加到上下文中
????context.SaveChanges();//插入到數據庫中
?????另一種插入方法:
?????var?unicorn?=?new?Unicorn?{?Name?=?"Franky",?PrincessId?=?1};
?????context.Entry(unicorn).State?=?EntityState.Added;
?????context.SaveChanges();
?????在當前實體的關聯實體中添加新的對象:
?????//?Add?a?new?princess?by?setting?a?reference?from?a?tracked?unicorn
??????var?unicorn?=?context.Unicorns.Find(1);
??????unicorn.Princess?=?new?Princess?{?Name?=?"Belle"?};
??????//?Add?a?new?unicorn?by?adding?to?the?collection?of?a?tracked?princess
??????var?princess?=?context.Princesses.Find(2);
??????princess.Unicorns.Add(new?Unicorn?{?Name?=?"Franky"?});
??????context.SaveChanges();
8.??DbContext中的T-SQL查詢
?????1)?SQL語句查詢實體
??????var?unicorns?=?context.Unicorns.SqlQuery(
???????????????????"select?*?from?Unicorns").ToList();
?????2)?SQL語句查詢非實體類型
??????var?unicornNames?=?context.Database.SqlQuery<string>(
???????????????????????"select?Name?from?Unicorns").ToList();
?????3)?執行SQL命令
???????context.Database.ExecuteSqlCommand(
????????"update?Unicorns?set?Name?=?'Franky'?where?Name?=?'Beepy'");?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
