Проблема, которая приходит на ум, состоит в том, что у вас есть отношения без ассоциирования FK:
public class CreamModel
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public string ImageName { get; set; }
[ForeignKey("CreamTypeModel")]
public int? CreamTypeModel_id { get; set; }
public virtual CreamTypeModel CreamTypeModel { get; set; }
}
Это связывает FK со связанным эталонным свойством.
innerHTML удивительно быстр, и во многих случаях Вы получите лучшие результаты, просто устанавливающие это (я просто использовал бы, добавляют).
Однако, если очень уже существует в "mydiv" тогда, Вы вынуждаете браузер проанализировать и представить все то содержание снова (все, что было там прежде плюс все Ваше новое содержание). можно избежать этого путем добавления фрагмента документа на "mydiv" вместо этого:
var frag = document.createDocumentFragment();
frag.innerHTML = html;
$("#mydiv").append(frag);
Таким образом, только Ваше новое содержание анализируется (неизбежное), и существующее содержание не делает.
РЕДАКТИРОВАНИЕ: Мое плохое... Я обнаружил, что innerHTML не хорошо поддерживается на фрагментах документа. Можно использовать ту же технику с любым типом узла. Для Вашего примера Вы могли создать корневой узел таблицы и вставить innerHTML в это:
var frag = document.createElement('table');
frag.innerHTML = tableInnerHtml;
$("#mydiv").append(frag);
Чего Вы пытаетесь избежать? "Плохое чувство" невероятно неопределенно. Если Вы услышали, что "DOM является медленным" и решенный для "предотвращения DOM", тогда это невозможно. Каждый метод введения кода в страницу, включая innerHTML, приведет к создаваемым Объектам DOM. DOM является представлением документа в памяти Вашего браузера. Вы хотите Объекты DOM быть созданными.
причина, почему люди говорят "DOM, является медленной", то, потому что создание элементов с document.createElement()
, который является официальным интерфейсом DOM для создания элементов, медленнее, чем использование нестандартного innerHTML свойства в некоторых браузерах. Это не означает, что создание Объектов DOM плохо, это необходимо для создания Объектов DOM, иначе код не сделал бы ничего вообще.
Ответ об использовании фрагмента DOM на правильном пути. Если у Вас будет набор объектов HTML, что Вы - постоянная вставка в DOM тогда, то Вы будете видеть, что некоторые улучшения скорости используют фрагмент. Это сообщение John Resig объясняет его вполне прилично: http://ejohn.org/blog/dom-documentfragments/
Для начала, запишите сценарий, что времена, сколько времени он берет, чтобы сделать это 100 или 1,000 раз с каждым методом.
Для проверки повторения так или иначе не оптимизированы далеко - я не эксперт по механизмам JavaScript - варьируются HTML, который Вы вставляете каждый раз, говорите путем помещения '0001' тогда '0002' тогда '0003' в определенной ячейке таблицы.
Вы упоминаете, что интересовались альтернативами. При рассмотрении списка DOM-связанные плагины jQuery , Вы найдете несколько, которые выделены программно генерации деревьев DOM. Посмотрите, например SuperFlyDom или Создатель Элементов DOM ; но существуют другие.