2013-09-26 4 views
3

Добрый день!Пользовательские свойства в базе данных EF сперва

Я создал EF-модель из базы данных, используя базу данных first aproach, и добавил себе несколько свойств только для чтения для класса сущностей, сгенерированного EF, которые не находятся в базе данных. Каждый раз, когда я обновляю свою модель, добавляя данные из новых таблиц У меня создаются свободные свойства, поэтому я должен их воссоздать.

В качестве примера в базе данных у меня есть свойство isFemale, но в моем классе я создал

public string Gender 
{ 
    get 
    { 
      if(isFemale) return "female"; 
      else return "male"; 
    } 
} 

Мой вопрос, есть ли способ, чтобы обновить модель из базы данных, в результате чего свойства, сгенерированное мной?

Спасибо!

+0

возможно дубликат [Расширение Entity Framework Модель включает новое свойство] (http://stackoverflow.com/questions/6099456/extending-entity-framework-model-to-include-new-property) –

ответ

4

Добавить свойства в другой Partial Class вместо сгенерированного класса. Например, если сгенерированный класс имеет тип Person, определить другой частичный класс в одном проекте с тем же пространством имен:

public partial class Person 
{ 
    public string Gender 
    { 
     get 
     { 
      if(isFemale) return "female"; 
      else return "male"; 
     } 
    } 
} 
+0

Привет , Ричард Спасибо за ваш ответ! Я хочу пойти дальше и переписать свойство, созданное EF. Это возможно? В качестве примера у меня есть строковое поле BankAccount в базе данных и как результат, сгенерированный в моем классе сущности, который принимает нулевые значения. Я хочу перезаписать его, чтобы вернуть пустую строку, если значение равно null. public string BankAccount {get {if (_BankAccount == null) return ""; else return _BankAccount}}. С уважением! –

+1

Вы не можете переопределять свойства таким образом. Вам нужно либо использовать отдельное свойство, как вы уже, либо функцию или метод расширения. – Richard

4

Использование частичного класса будет решить вашу проблему, но:

  • Все части частичного класса должны быть определены в одной и той же сборке
  • Свойства от вашей частичной части не сохраняются в базе данных
  • Свойства из вашей частичной части не могут использоваться в linq-to- объекты запросов

read more

2

Вы могли бы сделать ваш класс частичной и разделите его в двух файлах, это путь, я использую его с DatabaseFirst.

public partial class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

public partial class Person 
{ 
    public string FullName { 
     get 
     { 
      return FirstName + " " + LastName; 
     } 
    } 
} 
+0

whoops не видел ответа Ричардса – Staeff

+0

этот помогает больше, так как можно увидеть, что вы можете просто создать и повторить класс, который вам нужен. Благодарю. – elcool

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