2017-01-29 3 views
1

Microsoft MVCのデータベーステーブル(エンティティフレームワーククラスを持つ)からフェッチする既存のクラス(オブジェクト?)に新しい型を追加しますか? ie: 私の人のクラス{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

モデル化するためにこれを追加することなく、そこに「年齢」を追加したいあなたPersonに(このプロパティは、データベースにマッピングすることにしたいいけないと仮定)[NotMapped]クラス:

[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); 
    } 

これは、あなたが実際にモデルに新しいフィールドを追加する必要が保存されます。 Entity Frameworkのを使用して

+0

私はただ新しいデータを返すだけで、それを保存したり、基本Personクラスを変更したりしません。 –

+0

このソリューションはあなたのためにうまくいくでしょうか? – Kesty

+2

これを指定しない限り、年齢を更新するとデータベースに保存されません。 –

関連する問題