Asp.net
實體框架 4(使用 EDMX),如何將欄位添加到數據庫實際上沒有該欄位的模型中
我需要將一個欄位添加到數據庫實際上沒有該欄位的模型中。
因為,首先我嘗試僅將欄位添加到實體類中。
public partial class Weborder { (Auto Generated) public int orderno {get; set;} . . . (Add Manually) public string newField1 {get; set;} //this is new field that DB does not have public string newField2 {get; set;} //this is new field that DB does not have }後來,當我更新 EDXM 時,EDMX 刪除了新欄位,因為數據庫沒有該欄位。:(
所以我手動將該欄位添加到 EDMX 模型中。(添加 -> 標量屬性)
然後編譯時發生錯誤,錯誤消息說:
Error 1 Error 3004: Problem in mapping fragments starting at line 399:No mapping specified for properties ... An Entity with Key (PK) will not round-trip when:...有人知道如何將新欄位添加到實體類中嗎?
謝謝!
EDITED FOR:如果您的模型是您的數據庫的表示並且在數據庫中您沒有該欄位,為什麼要手動添加它?
=>
檢索數據時,對象的返回類型為實體類。
在將數據從控制器傳遞到視圖之前,我需要將更多數據(欄位)添加到 IQueryable 結果中。
前任)
public DbSet<WEBORDERLN> WEBORDERLNs { get; set; } //repository public IQueryable<WEBORDERLN> WebOrderLns { get { return context.WEBORDERLNs; } }現在我在控制器中獲得了 weborderln 數據。在通過視圖之前,我需要
在結果中添加額外的數據。
var data = webOrderLnRepository.WebOrderLns.Where(e => e.PICKNO == OrderNo).ToList(); foreach (WEBORDERLN weborderln in data) { weborderln.[NEW FIELD] = "EXTRA DATA"; //// FOR THIS, I NEED TO ADD NEW FILED INTO ENTITY CLASS } //return data我希望它可以解釋這個問題:)
再次感謝。
您必須創建實體類的新部分(在新的 .cs 文件中)並向該類添加新欄位。您不得修改自動生成創建的部分零件,因為每次更改 EDMX 文件時都會覆蓋自動生成的文件。您也不能在 EDMX 中包含該欄位,因為 EDMX 定義了您到數據庫的映射 = 它僅包含數據庫中的欄位。
在與自動生成的類相同的程序集和命名空間中創建一個新文件 WebOrderPart.cs,其中包含:
public partial class Weborder { public string newField1 {get; set;} public string newField2 {get; set;} }