第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Codefirst中使用NotMapped

Codefirst中使用NotMapped

aluckdog 2018-08-27 11:10:38
最近在學(xué)習(xí)使用ef框架,在使用過程中遇到一個問題,由于使用Codefirst,數(shù)據(jù)庫的創(chuàng)建是根據(jù)實(shí)體屬性來的。有些屬性不需要創(chuàng)建對應(yīng)的表字段。ef中可以使用NotMapped來標(biāo)識類的某個屬性不需要創(chuàng)建對應(yīng)的數(shù)據(jù)庫字段。但是此操作會導(dǎo)致在調(diào)用ef中執(zhí)行sql腳本函數(shù)(context.database.sqlquery)的時候,被NotMapped描述屬性不能被正常查出來。例如:class a 中有屬性 fieldA,fieldB,fieldC。fieldC有NotMapped描述。執(zhí)行List<a> result = context.database.sqlquery<a>("select fieldA,fieldB,1 as filedC").tolist();查詢結(jié)果result中的fieldC的屬性為null。解決方案:使用viewmodel的形式獲取數(shù)據(jù),然后將數(shù)據(jù)拷貝到a中。class b:a{}b不包含在ef上下文中。List<a> result = context.database.sqlquery<b>("select fieldA,fieldB,1 as filedC").select(x=>new a(){  fieldA=x.fieldA,  fieldB=x.fieldB,  fieldC=x.fieldC}).tolist();這種方式可以解決問題,但是總覺得多繞了一步。監(jiān)測數(shù)據(jù)庫的時候看到ef發(fā)送的sql指令是完完整整發(fā)過去的。也就是說ef肯定是接收到了一張完整,包含fieldC字段的一張表的。只是在將表轉(zhuǎn)化成對象的時候忽略掉了這個字段。我卻因?yàn)檫@個要去新建一個“無意義”的實(shí)體。覺得有些別扭,網(wǎng)上沒找到想要的答案。所以在這里求大佬賜教。
查看完整描述

1 回答

?
陪伴而非守候

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個贊

1. 你可以不必建這個屬性的。

2. 如果你非要有這個屬性, NotMapped 的屬性,你又非要從數(shù)據(jù)庫查詢中取,當(dāng)然是這個鬼樣了。

人家提供了讓你可以有屬性不映射到數(shù)據(jù)庫,沒說讓你從數(shù)據(jù)庫取值的,

比如像你這樣的,完全可以在構(gòu)造函數(shù)中直接給 fieldC賦值的。

 


查看完整回答
反對 回復(fù) 2018-09-01
  • 1 回答
  • 0 關(guān)注
  • 1121 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號