Можно ли изменить способ, которым IDbSet <T>передает данные в объект POCO? - PullRequest
1 голос
/ 09 февраля 2012

Допустим, у меня есть этот DBSet

public DbSet<Category> Categories { get; set; }

и что он используется в моем хранилище следующим образом:

public virtual T GetById(long id)
{
    T t = dbset.Find(id);
    return t.Deleted ? null : t;
}

Скажем также, что в категории есть свойство Name, и эта категория является объектом POCO.

Есть ли способ изменить содержимое Name между базой данных и объектом POCO? Просто для примера, скажем, я хочу использовать все буквы имени в моем объекте категории POCO. Таким образом, я мог бы иметь Categories.Name = 'Books' в базе данных (Categories это таблица в данном случае), а затем иметь category.Name = "BOOKS" (где category это объект POCO) после выдачи такой команды:

Категория категория = categoryRepository.GetById (id);

Есть ли способ достичь этого? Есть ли в DBSet своего рода ловушка, в которую можно вставить вызов функции для преобразования данных, передаваемых в объект POCO?

(Конечно, тогда мне также понадобится выполнить обратную операцию при сохранении объекта POCO в базе данных)

1 Ответ

2 голосов
/ 09 февраля 2012

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

public partial class Categories {
    public string CapitalName {
        return Name.ToUpper();
    }
}

Тогда вы можете просто сделать:

Category category = categoryRepository.GetById(id);
string name = category.CaptialName;

Или вы можете создать метод расширения для категории.

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