Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem with connection to local database #57

Open
ghost opened this issue Jun 19, 2019 · 4 comments
Open

Problem with connection to local database #57

ghost opened this issue Jun 19, 2019 · 4 comments
Labels
help wanted Extra attention is needed question Further information is requested

Comments

@ghost
Copy link

ghost commented Jun 19, 2019

I downloaded database which application is connected to my computer to work with it locally. I was trying to change paths and names in AppSettings, but I faced with issues like "unable to open database file" or, in some cases, "no such table", and all tables are empty. Path is absolutely correct and file has all permissions. How I can establish local connection right?

@marb2000 marb2000 added help wanted Extra attention is needed question Further information is requested labels Aug 6, 2019
@KevHoff2020
Copy link

Hi, This is a cool application, and I was immediately able to get it working using VS 2019 on Windows 10 (latest and greatest).

I tried to update it to the latest frameworks by using nuget and installing the latest stable release for each of the installed packages, and I was able to get it to compile, however when I run it now I'm facing this issue SQLite Error 14: 'unable to open database file'

EntityFramework 3.1.2
.netcore.UniversalWindowsPlatform 6.2.10
netstandard.library 2.0.3

Sorry I can't be of more help
-Kevin

@mylastsong18
Copy link

mylastsong18 commented Mar 23, 2020

I modeled it after the AppLog database since its used locally so not a whole lot of code changes were needed

AppSettings.cs

static public readonly string DatabasePath = "Database";
static public readonly string DatabaseName = $"{DB_NAME}.{DB_VERSION}.db";
static public readonly string DatabasePattern = $"{DB_NAME}.{DB_VERSION}.pattern.db";
static public readonly string DatabaseFileName = Path.Combine(DatabasePath, DatabaseName);

// These aren't used anymore but you can always keep them around in case you want to revert the functionality
// static public readonly string DatabasePatternFileName = Path.Combine(DatabasePath, DatabasePattern);
// static public readonly string DatabaseUrl = $"{DB_BASEURL}/{DatabaseName}";

Startup.cs

await EnsureLocalDbAsync(); // ADD THIS
await EnsureLogDbAsync();
//await EnsureDatabaseAsync(); // NO LONGER NEEDED 
await ConfigureLookupTables();

static private async Task EnsureLocalDbAsync()
{
    var localFolder = ApplicationData.Current.LocalFolder;
    var databaseFolder = await localFolder.CreateFolderAsync(AppSettings.DatabasePath, CreationCollisionOption.OpenIfExists);
    if (await databaseFolder.TryGetItemAsync(AppSettings.DatabaseName) == null)
    {
        var sourceDatabaseFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Database/DatabaseName.Version.db"));
        var targetDatabaseFile = await databaseFolder.CreateFileAsync(AppSettings.DatabaseName, CreationCollisionOption.ReplaceExisting);
        await sourceDatabaseFile.CopyAndReplaceAsync(targetDatabaseFile);
    }
}

As for @KevHoff2020's comment i have been able to get to AppCenter 2.6.4 and EntityFrameworkCore 2.2.6. If you use them together then you must remember that they're both implementing a SQLite library so versions must match. Since i plan to continue using AppCenter i haven't explored just upgrading EFCore but i did notice the same error message when i was on 3.1.2. If i end up figuring anything else out i will definitely share my findings

@EtherGhost
Copy link

EtherGhost commented Sep 15, 2020

How is the database created? What defines it?
It doesn't seem to matter if models and contexts are removed, the created database looks the same anyway?
I'm probably blind but I can't find in it the code.

Edit:
Found it!
"Summary:
// Asynchronously ensures that the database for the context exists. If it exists,
// no action is taken. If it does not exist then the database and all its schema
// are created. If the database exists, then no effort is made to ensure it is compatible
// with the model for this context.
// Note that this API does not use migrations to create the database. In addition,
// the database that is created cannot be later updated using migrations. If you
// are targeting a relational database and using migrations, you can use the DbContext.Database.Migrate()
// method to ensure the database is created and all migrations are applied."

@wcswanson
Copy link

Certicate not trusted when connecting to SQL Server.

This connection string works in a console app:

string connString = @"Data Source=WIN-10-PRO-LEAN\SQLEXPRESS;Initial Catalog=VanArsdelDb;Integrated Security=SSPI;TrustServerCertificate=True";

I did generate a certificate using OpenSsl. Then it was added to the certicates in mmc tool. Then it was added to SQL Server Network Configuration, SQL EXPRSS.

But when I run the Inventory sample, settings to connect to the database using the above connection string, I am still getting the error connection error like certicate is not trusted.

What can be done to solve this issue?

MSSQL 15 SQLEXPRESS upgraded from Windows 10 Pro 15.0.2101.7
Visual Studio 2022

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed question Further information is requested
Projects
None yet
Development

No branches or pull requests

5 participants