2017-01-29 48 views
1

我想添加一個新的類型到現有的類(對象?)從數據庫表(與實體框架類)中獲取在Microsoft MVC。 例如: 我的人類{f_name,l_name} 當我循環扔它時,如何向這個對象添加新類型? 像:如何將新類型添加到現有的類或對象在asp.net mvc

// Person class stracture is: 
public Person() 
{ 
    public string f_name { get; set; } 
    public string l_name { get; set; } 
} 

我想「年齡」添加到它沒有添加此模型

var all_persons = db.Person.toList(); 
for (var item in all_person) 
{ 
    item.age = some_value; 
} 
return View(all_persons); 
+0

要添加什麼類型? –

+1

您需要創建另一個模型(可以從包含'int age'屬性的'Person'派生出來),然後將查詢投影到它。 –

+0

我不希望新的屬性(年齡在這裏)保存在我的模型(和數據庫表)中,只是想顯示其他動態值 –

回答

1

例使用實體框架:

如果使用代碼優先方法則[NotMapped]將正常工作適合你。

但是,如果您使用的是模型優先的方法,那麼它將不起作用,因爲如果您要更新模型,它將根據模型的.tt模板進行更新,並創建一個只包含表格屬性的類。

那麼,現在呢?這裏是部分類的概念。

模型由EF生成:

namespace EF.Model 
{ 
    public partial class Person 
    { 
     public string f_name { get; set; } 
     public string l_name { get; set; } 
    } 
} 

所以要補充一點,你不想EF映射,同時CRUD操作的附加屬性。在相同的類名和相同的命名空間在同一個項目添加一個新的部分類爲EF模型

namespace EF.Model 
{ 
     public partial class Person 
     { 
      public string fullName { get; set; } 
      public int age { get; set; } 
     } 
} 

的所以現在你可以這樣做。

var all_persons = db.Person.toList(); 
for (var item in all_person) 
{ 
    item.age = some_value; 
    item.fullName = item.f_name + item.l_name; 
} 
return View(all_persons); 

我希望這會給你一個更好的理解。你應該閱讀關於部分類。 https://www.dotnetperls.com/partial

2

添加[NotMapped](假設你不希望此屬性映射到數據庫中)在你的Person類:

[NotMapped] 
public int Age {get; set;} 

或者創建一個視圖模型,而不是使用直接

EF模型
1

您可以在LINQ選擇添加新特性如下:

void AddNewField(int number) 
    { 
     var all_persons = new db.Person.Select(x => new { x.f_name, x.l_name, age = number }); 
     return View(all_persons); 
    } 

這將節省您不必實際的新字段添加到模型。

+0

我只想返回新的數據,而不是保存它或更改基類人員類。 –

+0

那麼這個解決方案會爲你工作,不是嗎? – Kesty

+2

除非您指定要更新年齡,否則它不會保存在數據庫中。 –

相關問題