Добавление пользовательского свойства в Entity Framework? - PullRequest
20 голосов
/ 19 октября 2010

Я впервые использую Entity Framework и хочу знать, возможно ли следующее: я сгенерировал свои классы из БД, и у меня есть класс с именем Category.

Очевидно, в нем есть все мои поля в таблице (ID, CategoryName, SortOrder и т. Д.), Но я хочу знать, могу ли я добавить пользовательское свойство, которого нет в таблице, но на самом деле является результатом пользовательского метода .

Я хочу добавить новое свойство с именем CategoryURL, которое в основном является свойством «CategoryName» и выполняется через пользовательский метод и возвращает дефисную строку.

Моя первоначальная мысль - наследование от сгенерированного класса Category и создание чего-то подобного внутри?

public string CategoryURL 
{
    get{ return MyCustomMethod(this.CategoryName) }
}

Это правильный подход? И будет ли this.CategoryName работать так, как я думаю? По сути, конечный результат - когда я возвращаю список 'Category', я хочу, чтобы это было частью класса, чтобы я мог использовать его в цикле foreach.

Надеюсь, это имеет смысл?

Ответы [ 2 ]

20 голосов
/ 19 октября 2010

Вы должны использовать partial класс:

public partial class Category
{
    public string CategoryURL  
    { 
        get{ return MyCustomMethod(this.CategoryName); } 
    } 
}

Таким образом this.CategoryName будет работать так же, как и ожидалось.

Это работает, потому что классы, сгенерированные генератором кода структуры сущностей, также генерируют partial классы. Это также означает, что вы можете безопасно заново сгенерировать классы из базы данных, не затрагивая части классов, которые вы определили сами.

9 голосов
/ 14 июня 2016

Вы должны добавить атрибут [NotMapped] к свойству

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...