Импортировать данные доступа к Ms путем программирования - программирование
Подтвердить что ты не робот

Импортировать данные доступа к Ms путем программирования

Я ищу хороший подход для импорта данных из мс-доступа и привязки его к любой модели шаблона MVC


Вот такой подход, который мы думаем после

Подход 1:

  • Открыть файл доступа Ms
  • Открыть базу данных
  • Открыть все таблицы
  • Импорт данных всех таблиц и привязка их к модели
  • Закрыть все таблицы
  • Закрыть базу данных
  • Закрыть файл

Подход 2:

  • Подключить базу данных доступа к Ms в Asp.Net MVC
  • Откройте базу данных
  • передать запрос
  • извлечь данные и привязать их к модели
  • закрыть базу данных

Какой подход лучше и как я могу его реализовать?

UPDATE: Я реализовал подход 2, и его работа прекрасна, кто-нибудь знает, как реализовать подход 1

4b9b3361

Ответ 1

Оба подхода потребуют от вас подключения к базе данных и отображения содержимого в вашу модель. Я предполагаю, что подход 1 - это "когда веб-приложение начинает подключаться и копировать все содержимое базы данных в память и получать доступ, если оттуда", а подход "2" - "когда мне нужно отобразить некоторые данные, подключить базу данных и скопировать конкретное содержимое к моей модели".

Если это так, то рекомендуется подход 2 (и вы заявили, что сделали это, так что все хорошо).

Подход 1 может работать ok-ish для баз данных меньшего размера, но:

  • Вы потеряете все [кислотные] [1] - доброту, предоставляемую вашей базой данных
  • Застрял с глобальными переменными коллекции - не самая любимая концепция в веб-приложениях.
  • В памяти нет необходимости в полной базе данных. Ваша медленная точка в веб-приложениях обычно является сетью, за несколько миллисекунд для загрузки данных, когда это необходимо, ничто по сравнению с тем временем, когда ваш html достигает браузера.

Если вы попытаетесь приблизиться к одному (не рекомендуется, не делайте этого, котенок получает вред при каждом запуске этого кода), то самым простым способом было бы иметь что-то подобное в файле global.asax.cs:

public class MvcApplication : System.Web.HttpApplication {

public static List<MyTable1> globalTable1;
public static List<MyTable2> globalTable2;

protected void Application_Start() {
  AreaRegistration.RegisterAllAreas();
  WebApiConfig.Register(GlobalConfiguration.Configuration);
  FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
  RouteConfig.RegisterRoutes(RouteTable.Routes);
  BundleConfig.RegisterBundles(BundleTable.Bundles);

  var DatabaseMagic = new DatabaseAccessClass("a:\path\to\database.mdb");
  globalTable1 = DatabaseMagic.getDataForTableOne();   //However you do your loading and mapping
  globalTable2 = DatabaseMagic.getDataForTableTwo();   //ditto
}

Затем в ваших контроллерах:

    public ActionResult Index()
    {
        return View(MvcApplication.globalTable1);
    }

И ваше мнение:

@model List<MvcApplication1.MvcApplication.MyTable1>
@{
    ViewBag.Title = "Index";
}
<h2>Blah</h2>
<ul>
@foreach (var i in Model) {
    <li>@i.idField  - @i.contentField </li>
}
</ul>

(Я не упоминал об этом?)

Ответ 2

Используйте Entity Framework.Create ViewModel для отображения.

Ответ 3

Что вам нужно сделать, так это построить свою модель в соответствии с вашей таблицей. Таким образом, класс модели должен иметь свойства, соответствующие вашим полям таблицы. Затем, когда вам понадобится модель, вы запросите повторную копию базы данных и соответствующим образом заполните свойства модели.

Ответ 4

Я не понял Подход 1.

Требуется ли использование Access? Я видел много проблем с файловой базой данных (например, Access), поэтому лучше импортировать все данные в SQL Server или другую базу данных из Access, а затем использовать опцию 2.

Как только ваша база данных уже создана, вы можете использовать базу данных Entity Framework для ее привязки.

Ответ 5

Вам нужно добавить с помощью System.Data.OleDb; в файл заголовка И добавьте эти Provider = Microsoft.ACE.OLEDB.12.0; DataSource = | DataDirectory |\myAccessFile.mdb; Persist Security Info = False; строка в строке подключения использует строку подключения fetch
обновить базу данных ms-access с помощью OleDbCommand, OleDbConnection

и ms-access запрос, как и запрос sql