您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“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è)資訊頻道!
免責(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)容。