Question

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.Data.Linq.Mapping;
using DbLinq.Data.Linq;


namespace LinqToSQLite
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = "DbLinqProvider=Sqlite;Data Source=db2.sqlite";

            DataContext db = new DataContext(connectionString);

            db.ExecuteCommand(Person.CreateCommand);
            Table<Person> table = db.GetTable<Person>();

            table.InsertOnSubmit(new Person { Name = "Alfred" });
            table.InsertOnSubmit(new Person { Name = "Brian" });
            table.InsertOnSubmit(new Person { Name = "Charles" });

            db.SubmitChanges();

            var query = from p in table select p;
            foreach (var p in query)
            {
                Console.WriteLine(p.ID + ". " + p.Name);
            }

            Console.WriteLine("Done");
            Console.ReadLine();
        }
    }

    [Table(Name = "Persons")]
    class Person
    {
        [Column(IsPrimaryKey = true, IsDbGenerated = true)]
        public int ID { get; set; }

        [Column]
        public string Name { get; set; }

        public static string CreateCommand = "CREATE TABLE IF NOT EXISTS Persons ( Id INTEGER PRIMARY KEY, Name TEXT )";
    }
}

I created simply application using dblinq to provide Linq to SQLite but it hangs on db.SubmitChanges(). What's the reason? I just wanted to create simply dblinq application without using DbMetal.exe... There is no error, no exception I'm clueless.

Was it helpful?

Solution

Problem was with DataContext and connectonString, to fix it I had to change...

string connectionString = "DbLinqProvider=Sqlite;Data Source=db2.sqlite;";
SQLiteConnection connection = new SQLiteConnection(connectionString);

DataContext db = new DataContext(connection);

... or add to DbLinqConnectionType to connectionString...

string connectionString = "DbLinqProvider=Sqlite;Data Source=db2.sqlite;";
connectionString += "DbLinqConnectionType=System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139";

DataContext db = new DataContext(connectionString);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top