В настоящее время я сталкиваюсь с проблемой производительности при создании объектов POCO из моей базы данных.Я использую Entity Framework 4 в качестве OR-Mapper.Пока все приложение является прототипом.
Давайте предположим, что я хочу иметь несколько бизнес-объектов, таких как классы «Принтер» или «Сканер».Оба класса наследуются от BaseClass под названием Product.Бизнес-классы существуют.
Я пытаюсь использовать более общий подход к базе данных.Я не хочу создавать таблицы для «Принтер» и «Сканер».Я хочу иметь 3 таблицы: одна называется Product, а другая - Property и PropertyValue (в которой хранятся все присвоенные значения для определенного Product).
На моем бизнес-уровне я создаю определенный объект, подобный этому:
public Printer GetPrinter(int IDProduct)
{
Printer item = new Printer();
// get the product object with EF
// get all PropertyValues
// (with Reflection) foreach property in item.GetType().GetProperties
// {
// property.SetValue("specific value")
// }
return item;
}
Вот так выглядит модель EF: ![enter image description here](https://i.stack.imgur.com/rwADO.png)
Пока работает отлично.Сейчас я делаю тесты производительности для извлечения нескольких наборов.
Я создал прототип и улучшил его в несколько раз, чтобы повысить производительность.Это все еще далеко от того, чтобы быть пригодным для использования.Мне нужно 919 мсек, чтобы создать 300 объектов, которые содержат только 3 свойства.
Причина выбора такого дизайна БД состоит в том, чтобы иметь общий дизайн базы данных.Добавление новых свойств должно выполняться только в бизнес-модели.
Я просто слишком глуп, чтобы создать эффективный способ получения объектов xx, или мой подход полностью неверен?Насколько я понимаю OR-Mapper, они в основном делают то же самое?