2013-11-29 4 views
2

У меня есть класс от модели первого (EF 4.4 .Net 4.0):Override получить, установить в Entity Framework Database First

public partial class Test 
{ 
    public int Id {get; set; } 
    public int Date { get; set; } 
    //other fields... 
} 

Я не могу изменить модель базы данных, но мне нужно переопределить получить и установить в этом класс. Нечто подобное:

[MetadataType(typeof(TestMetadata))] 
public partial class Test 
{ 
    public class TestMetadata 
    { 
     private int data; 
     public DateTime Date 
     { 
      get 
      { 
       return DateTime.Today.Date; 
      } 
      set 
      { 
       date = value.Day; 
      } 
     } 
    } 

Этот подход dosen't работы. Есть ли возможность переопределить get set в частичных calss?

+0

Опишите, что вы хотите достичь, и почему бы вам это сделать? Дайте реальный сценарий. –

+0

У меня есть старая система, дата и время которой хранятся в int field (в базе данных). Я переписываю старую систему на C# + EF, и я не изменяю структуру базы данных (из-за совместимости). – mds

+0

Но у вас первое свойство кода Date находится непосредственно в тестовом классе, но в следующем - в TestMetadata. Можете ли вы объяснить, какую функциональность вы хотите достичь? – Krzysztof

ответ

0

См. Здесь часть решения. Я не понимаю, где (какое свойство) вы хотите сохранить преобразованную дату. Нет возможности сохранить int в поле datetime.

public partial class Test 
{ 
    string format = "yyy/mm/dd"; 

    public string DateFormat { get { return Date.ToString(format); } 
} 
1

Мое обходное решение. Нечто подобное:

public partial class Test 
    { 
     public DateTime DateSi 
     { 
      get 
      { 
       return ConvertIntToDate(Date) 
      } 
      set 
      { 
       Date = ConvertDateToInt(value); 
      } 
     } 
    } 

В C# я использую Test.DateSi (не отображается) и EF сохранить в поле базы данных Дата с правильным значением Int. Я должен помнить только для использования в C# DateSi вместо Date.

+0

Вы даже можете сделать свойство 'Date' частным. EF сможет заполнить его. –

Смежные вопросы