Обновление модели Entity Framework из базы данных, пользовательские свойства не распознаются - PullRequest
0 голосов
/ 01 июня 2018

Я просто хочу задать общий вопрос для Entity Framework.Когда я хочу обновить свою модель из базы данных или добавить новый элемент в модель из базы данных, я теряю все свои пользовательские свойства

В примере

My Sql Table
Test
Id     int
TestId int

EF creates model automatically
public class Test
{
     public int    Id {get;set;}
     public int    TestId {get;set;}
}
//I want to add custom property on class 
public class Test
{
     public int    Id {get;set;}
     public int    TestId {get;set;}
     public string TestName {get;set;} //I added custom property
}

, но когда я обновляю модель, яЯ теряю пользовательские свойства и каждый раз мне нужно добавлять его снова и снова

У вас есть какое-то решение для этого?

Спасибо

1 Ответ

0 голосов
/ 01 июня 2018

Вам необходимо использовать ключевое слово partial. Частичные классы и методы (Руководство по программированию в C #)

EF должен добавить ключевое слово partial к классам, которые он создает (если этого не произойдет, вам нужно решить, как получитьпроцесс, который вы используете для добавления ключевого слова - обычно путем редактирования файла .tt).Затем вы можете создать отдельный файл .cs с тем же определением класса.В вашем случае:

public partial class Test

Затем компилятор C # будет рассматривать два определения как одно и то же определение и «добавлять» их вместе.Это работает, если вы следуете нескольким простым правилам.

  • Оба определения должны быть одинаковыми и содержать ключевое слово part.
  • Оба должны быть определены в одном модуле (.exe,.dll)
  • Оба должны быть определены в одном и том же пространстве имен.

Таким образом, у вас есть одно определение класса, которое поддерживает EF, и одно, которое вы поддерживаете.EF не будет перезаписывать ваши пользовательские свойства.

Ваш класс будет просто:

public partial class Test
{
    public string TestName {get; set;} 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...