溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Entity Framework 7中的影子屬性怎么用

發(fā)布時(shí)間:2021-12-16 11:29:42 來源:億速云 閱讀:220 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“Entity Framework 7中的影子屬性怎么用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Entity Framework 7中的影子屬性怎么用”這篇文章吧。

影子屬性是類本身中并不存在,但Entity Framework卻認(rèn)為存在的字段。它們能夠參與查詢、創(chuàng)建/更新操作和數(shù)據(jù)庫(kù)遷移。微軟認(rèn)為影子屬性有兩個(gè)主要的應(yīng)用場(chǎng)景:

  • 允許數(shù)據(jù)訪問層訪問那些不該由領(lǐng)域模型暴露到應(yīng)用其它部分的屬性

  • 允許開發(fā)者高效地添加屬性到?jīng)]有源代碼的類中

影子屬性在OnModelCreating事件中被定義,該事件在DBContext中為可重載方法。這里有一個(gè)綁定DataTime屬性LastUpdated到Blog實(shí)體的例子。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity().Property("LastUpdated");
}

這個(gè)屬性的一個(gè)通用用例是在執(zhí)行保存操作時(shí)自動(dòng)賦值給LastUpdated屬性。為此,你可以使用DBContext.ChangeTracker來獲取DBEntry類型的對(duì)象列表。你可以這樣寫:

foreach (var item in modifiedEntries)
{
    Item.Property("LastModified").CurrentValue = DateTime.Now;
}

一般可以通過重載DBContext類的SaveChanges()方法實(shí)現(xiàn)。通過這里的重載,你可以更新所有需要更新的數(shù)據(jù),而又不必在每一個(gè)更新數(shù)據(jù)的地方重復(fù)代碼。

當(dāng)ChangeTracker適合用于修改保存事件的時(shí)候,你會(huì)很想繞過DBEntry直接訪問影子屬性。通過EF.Property函數(shù)就可以做到,如下所示:

EF.Property(entity, "LastModified")

這個(gè)表達(dá)式放在一個(gè)查詢中能生成服務(wù)器端的WHERE和ORDER BY子句。

以上是“Entity Framework 7中的影子屬性怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI