Соединение с базой данных MS Access с C# в ASP.Net Core

Я пытаюсь связать свой новый проект (ASP.Net Core Framework) с Access Database.

Что мне нужно ввести: appsettings.json -> "ConnectionStrings"?

И нужно ли для этого что-то устанавливать?

Этот фреймворк новый и, к сожалению, я мало что нашел в Интернете.

Мне нужно подключить именно "БД доступа".

Буду очень рад подробной информации.


person userman2    schedule 10.04.2017    source источник
comment
Помогает ли это msdn.microsoft.com/en- us/library/hktw939c(v=vs.85).aspx   -  person June7    schedule 10.04.2017
comment
Миграция на SQL Server не применима??   -  person Saurabh    schedule 17.10.2018


Ответы (4)


Используйте "Access Database Engine", который обеспечивает интерфейс ODBC для вашего приложения. Обязательно используйте 64-разрядную версию (поскольку ядро ​​dotnet только 64-разрядное). Обратите внимание, что это безопасно только для однопоточного доступа. Используйте пассивный параметр при установке, так как дополнительные компоненты Access не нужны.

AccessDatabaseEngine_X64.exe /passive

person Mike    schedule 21.09.2018
comment
Обратите внимание на формат строки подключения: @Driver={Драйвер Microsoft Access (*.mdb, *.accdb)};DBQ=‹pathtofile›; - person orellabac; 26.11.2018
comment
Почему это безопасно только для однопоточного доступа? Это не ограничение драйверов OleDB для Access. - person Jonathan Allen; 23.12.2019
comment
Из ссылки Распространяемый компонент Access Database Engine 2010 не предназначен: ... где код будет выполняться под системной учетной записью или будет одновременно работать с несколькими удостоверениями пользователей, или будет сильно реентерабельным и ожидает поведения без сохранения состояния. - person Mike; 22.01.2020

По этой ссылке: https://blogs.msdn.microsoft.com/dotnet/2016/11/09/net-core-data-access/

А как насчет OLE DB?

OLE DB был отличным способом унифицированного доступа к различным источникам данных, но он был основан на COM, технологии, предназначенной только для Windows, и поэтому не подходил для кросс-платформенной технологии, такой как .NET. Основной. Он также не поддерживается в версиях SQL Server 2014 и более поздних. По этим причинам OLE DB не будет поддерживаться .NET Core.

person Guillaume Réan    schedule 18.10.2017
comment
Это неправильно, что СТАРАЯ БД была удалена. blogs.msdn.microsoft.com/sqlnativeclient/2011/08/29/ - person xMRi; 18.10.2017

Вы можете использовать Entity Framework Core, который настоятельно рекомендуется для ASP.net Core приложений. Также есть много руководств по его использованию.

В официальной документации перечислены подходящие поставщики для EF Core:

EntityFrameworkCore.Jet -> файлы Microsoft Access

Убедитесь, что сначала ознакомились с ограничениями на странице GitHub и проверьте, проходит ваши требования.

Лично я еще не использовал его, но я уверен, что все это не может быть слишком сложным.

person Smartis    schedule 18.04.2018
comment
Это должен быть ответ. Увы, 4.6.1 зависимость. - person BWhite; 18.07.2019
comment
Значит, это не будет работать в веб-приложении asp.net core 2.2, верно? - person SoftDev30_15; 09.11.2019

Смотрит здесь: https://www.connectionstrings.com/

В частности, здесь: https://www.connectionstrings.com/access/

Кроме того, попробуйте это.

using System;
using System.Windows.Forms;
using System.Data.Odbc; 

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string connetionString = null;
            OdbcConnection cnn ;
            connetionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=yourdatabasename.mdb;";
            cnn = new OdbcConnection(connetionString);
            try
            {
                cnn.Open();
                MessageBox.Show ("Connection Open ! ");
                cnn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Can not open connection ! ");
            }
        }
    }
}

Попробуйте и это...

using System;
using System.Windows.Forms;
using System.Data.OleDb; 

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string connetionString = null;
            OleDbConnection cnn ;
            connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=yourdatabasename.mdb;";
            cnn = new OleDbConnection(connetionString);
            try
            {
                cnn.Open();
                MessageBox.Show ("Connection Open ! ");
                cnn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Can not open connection ! ");
            }
        }
    }
}
person ASH    schedule 12.04.2017
comment
Вопрос касается конкретно ядра ASP.Net, а не стандартного приложения .Net. Формы Windows и пространства имен System.Data.OleDb/System.Data.Odbc недоступны. - person Liam Dawson; 31.07.2017