【EntityFramework-2】增刪改查操作

針對(duì)這個(gè)配置做數(shù)據(jù)的增刪改查操作操作:

 [Table("t_user")]
 public class Person
 {
     public long ID { get; set; }
     public string Name { get; set; }
 }
 public class TestDBContent : DbContext
 {
     public TestDBContent() : base("name=conn1"){}
     public DbSet<Person> Persons { get; set; }
 }

1. 數(shù)據(jù)庫插入數(shù)據(jù):

using (TestDBContent tdc = new TestDBContent())
{
      Person p = new Person() { Name="fxhl"};            
      tdc.Persons.Add(p);
      tdc.SaveChanges();
}

2. 數(shù)據(jù)庫刪除數(shù)據(jù):

先查詢出來 要?jiǎng)h除的數(shù)據(jù)后 ,然后 Remove 。這種方式問題最少,雖然性能略低:

using (TestDBContent tdc = new TestDBContent())
{
    var p= tdc.Persons.Where(i => i.ID == 6).FirstOrDefault();
    tdc.Persons.Remove(p);
    tdc.SaveChanges();
}

3. 修改數(shù)據(jù)庫數(shù)據(jù):

先查詢出來要修改的數(shù)據(jù),然后修改,然后 SaveChanges

using (TestDBContent tdc = new TestDBContent())
{
    var p= tdc.Persons.Where(i => i.ID == 7).FirstOrDefault();
    p.Name = "fxhl";
    tdc.SaveChanges();
}

4. 數(shù)據(jù)查詢:

在上面的刪除和修改就包含數(shù)據(jù)查詢,下面就看看生成的原始SQL語句:

ctx.Database.Log=(sql)=>{Console.Write(sql)}

EF 的查詢是“延遲執(zhí)行”的

  • 只有遍歷結(jié)果集的時(shí)候才執(zhí)行 select 查詢
  • 需要立即執(zhí)行,在最后加toList(),或toArray()
  • Update操作時(shí),只更新了修改的字段
  • 必須寫成 IQueryable<Person>,如果寫成 IEnumerable 就會(huì)在內(nèi)存中取后續(xù)數(shù)據(jù)
  • 禁用DBMigration(就是由 EF 幫我們建數(shù)據(jù)庫)
public class TestDBContent : DbContext
{
    public TestDBContent() : base("name=conn1")
    {
        Database.SetInitializer<TestDBContent>(null);
    }
    public DbSet<Person> Persons { get; set; }
}

4.1. 執(zhí)行原始SQL語句:

非查詢語句:

using (TestDBContent tdc = new TestDBContent())
{             
    tdc.Database.ExecuteSqlCommand("insert into t_user (Name) values ({0})","哈哈111");
}

查詢語句:

 using (TestDBContent tdc = new TestDBContent())
{
      var q1 = tdc.Database.SqlQuery<Item1>("select Name,Count(*) Count from T_Persons where Id>{0} andCreateDateTime<={1} group by Name", DateTime.Now); 
}
class Item1
{
       public string Name { get; set; }
       public int Count { get; set; }
}

類似于 ExecuteScalar 的操作比較麻煩:

int c = ctx.Database.SqlQuery<int>("select count(*) from T_Persons").SingleOrDefault();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,639評(píng)論 18 399
  • SQL SELECT 語句 一、查詢SQL SELECT 語法 (1)SELECT 列名稱 FROM 表名稱 (2...
    有錢且幸福閱讀 5,999評(píng)論 0 33
  • 什么是SQL數(shù)據(jù)庫: SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫。SQL是...
    西貝巴巴閱讀 1,995評(píng)論 0 10
  • 注:導(dǎo)購員即銷售員 “我再看看吧!”,很多導(dǎo)購員聽到這句話,頭就開始疼了?!?因?yàn)轭櫩鸵x開,因?yàn)轭櫩偷狡渌T店被...
    妝大叔閱讀 6,712評(píng)論 0 0
  • 丁酉四月,有妖孽縱橫于世,三四日有余,名“焱”,性烈易躁,相傳乃太陽神之子怨氣所化,后羿射九子于扶桑,怨氣不散,吸...
    良柳如煙閱讀 308評(píng)論 13 4

友情鏈接更多精彩內(nèi)容