Добавление настраиваемого свойства в инфраструктуру Entity?
Я использую Entity Framework в первый раз и хочу знать, возможно ли следующее: я сгенерировал свои классы из БД и назвал категорию.
Очевидно, что он имеет все мои поля в таблице (ID, CategoryName, SortOrder и т.д.), но я хочу знать, могу ли я добавить настраиваемое свойство, которого нет в таблице, но на самом деле это результат пользовательского метода.
Я хочу добавить новое свойство под названием "CategoryURL", которое в основном является свойством "CategoryName", запускаемым через собственный метод и возвращает строку с переносом.
Моя первоначальная мысль наследуется от созданного класса Category и создает что-то вроде этого внутри?
public string CategoryURL
{
get{ return MyCustomMethod(this.CategoryName) }
}
Это правильный подход? И будет ли это. CategoryName работать так, как мне кажется? В основном конечный результат - когда я возвращаю список "Категория", я хочу, чтобы это было частью класса, поэтому я могу использовать его в моем цикле foreach.
Надеюсь, это имеет смысл?
Ответы
Ответ 1
вы должны использовать класс partial
:
public partial class Category
{
public string CategoryURL
{
get{ return MyCustomMethod(this.CategoryName); }
}
}
Этот способ this.CategoryName
будет работать так, как ожидалось.
Это работает, потому что классы, генерируемые генератором кода фреймворка сущности, также генерируют классы partial
. Это также означает, что вы можете безопасно перегенерировать классы из базы данных, не затрагивая частичные классы, которые вы сами определили.
Ответ 2
Вы должны добавить атрибут [NotMapped]
к свойству