亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Codefirst中使用NotMapped

Codefirst中使用NotMapped

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

1 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

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

2. 如果你非要有這個屬性, NotMapped 的屬性,你又非要從數據庫查詢中取,當然是這個鬼樣了。

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

比如像你這樣的,完全可以在構造函數中直接給 fieldC賦值的。

 


查看完整回答
反對 回復 2018-09-01
  • 1 回答
  • 0 關注
  • 1097 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號