2017-07-13 3 views
1

私はEF 6 DBの最初のアプローチでWeb API 2を使用しています。エンティティを取得する際に、プロパティ名を変更する必要があります。Entity Framework 6の戻り時にプロパティ名を変更

例えば:私はEmployeeエンティティを有し、特性の一つは、データベースの列名と同じ、EmployeeJoiningDateと呼ばれます。

context.Employeeを取得しているうちに、EmployeeJoiningDatepropertyEmpJd(シリアル化中)に「名前を変更する」とします。

この新しいクラスに別のクラスとマップを作成せずにこれを達成する方法はありますか?属性はありますか?

+0

私は{を取得または設定します;} パブリック文字列EmpJdに(Employee.cs) '【コラム( "EmployeeJoiningDateproperty")] EDMXのTTクラスでこの属性を使用し' が、その作業はありません – sushmitgos

答えて

3

データベースフィールドが「EmployeeJoiningDate」と呼ばれていますが、あなたのエンティティ内のプロパティがEmpJdしたいされている場合:列の属性の名前が表にあるものと一致する必要があることを

[Column("EmployeeJoiningDate")] 
public string EmpJd { get; set; } 

を書き留め、余分なスペースなどはありません。

これは、テーブルのデータ型もNVarchar型であることを前提としています。データテーブルのデータ型がDateTimeのであれば、私は、これはあなたがあなたのコードで使用できるEmpJdフィールドを与える

public DateTime EmployeeJoiningDate { get; set; } 

[NotMapped] 
public string EmpJd 
{ 
    get { return EmployeeJoiningDate.ToString(); } // Optionally add format string. 
    set 
    { 
    DateTime result; 
    if (!DateTime.TryParse(value, out result)) 
     throw new ArgumentException("The provided EmpJd was not recognized as a date."); 
    EmployeeJoiningDate = result; 
    } 
} 

...別のアプローチをお勧めします。この場合、エンティティに対してLinqなどを使用する場合は、Linq式のEmployeeJoiningDateプロパティを使用することが重要です。 EFはではなく、はEmpJdをEmployeeJoiningDateに解決します。 日付のみを文字列として表示する場合は、EmpJdプロパティのSetterを省略できます。

関連する問題