Я собираюсь создать начальную таблицу в своем приложении, чтобы хранить все города/штаты моей страны. Это относительный большой набор данных: 5k + реестры.C# - Entity Framework - большой исходный код данных сначала
Чтение this post просветил для меня хороший способ сделать это, хотя я думаю, что оставление файла sql, который будет импортироваться EF, в открытом виде является недостатком безопасности.
Формат файла не имеет значения: я могу сделать его XLS или TXT, если захочу; вместо того, чтобы выполнять его как команду SQL в качестве показа в сообщении, я могу просто прочитать ее как поток и сгенерировать объекты, как показано в учебнике следующего hiperlink.
Чтение this tutorial о семенах данных в коде-первых, я увидел, что метод семян будет выполняться в процессе инициализациибазы данных и объекты семенные генерируются в методе семян.
Мои вопросы: О методах семян, что является лучшим подходом, подход SQL-файла или подход к объекту? Я лично считаю, что объектный подход более безопасен, но может быть медленнее, что может порождать мой второй вопрос: Метод семени, который выполняется в процессе инициализации базы данных, выполняется ТОЛЬКО при создании БД? Это немного непонятно для меня.
Спасибо.
Метод 'Seed' выполняется, когда ваш db создан или когда вы выполняете миграцию db, и может быть очень медленным, если у вас есть 5k объектов для добавления. Я бы проголосовал за sql-файл, поскольку он будет намного быстрее с точки зрения исполнения. Когда я столкнулся с добавлением больших наборов объектов с EF, мне пришлось внести изменения в db после добавления ~ 100 объектов, чтобы добавить следующие объекты не потребуется много времени (хотя это было с EF 4) –
Вы не укажите, какую базу данных вы используете. Но если вы используете Sql Server, вам следует использовать Bulk Copy или bcp.exe для загрузки вашей базы данных. Это самый быстрый способ загрузки базы данных. –