I'm using dotConnect for SQLite 4.6.226 Pro with Entity Framework Code-First (EF version is 5.0).
Code sample to run "as-is" (add reference to EntityFramework.dll (I use assembly v4.4.20627.0 for .NET 4.0), System.Data.Entity and System.ComponentModel.DataAnnotations to run this code):
Code: Select all
using System;
using System.ComponentModel.DataAnnotations;
using System.Data.Common;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
namespace EF_CodeFirst_SQLite
{
class Program
{
static void Main(string[] args)
{
Database.DefaultConnectionFactory = new SQLiteConnectionFactory();
var context = new BloggingContext("Data Source=D:\\DBSys.db; FailIfMissing=false;");
var connection = ((IObjectContextAdapter) context).ObjectContext.Connection;
connection.Open();
using (DbTransaction transaction = context.Database.Connection.BeginTransaction())
{
context.Categories.Add(new SystemTypeCategoryDTO() { Id = 1, Name = "123" });
context.SaveChanges();
transaction.Commit();
}
}
}
public class SQLiteConnectionFactory : IDbConnectionFactory
{
private const string invariantName = "Devart.Data.SQLite";
public DbConnection CreateConnection(string ConnectionString)
{
if (String.IsNullOrEmpty(ConnectionString))
throw new ArgumentNullException("ConnectionString");
DbProviderFactory sqliteProviderFactory = DbProviderFactories.GetFactory(invariantName);
if (sqliteProviderFactory == null)
throw new InvalidOperationException(String.Format("The '{0}' provider is not registered on the local machine.", invariantName));
DbConnection connection = sqliteProviderFactory.CreateConnection();
connection.ConnectionString = ConnectionString;
return connection;
}
}
public class SystemTypeCategoryDTO
{
[Key]
public int Id { get; set; }
[Required, MaxLength(50)]
public String Name { get; set; }
}
class BloggingContext : DbContext
{
public BloggingContext(string connString)
: base(connString)
{
}
public DbSet<SystemTypeCategoryDTO> Categories { get; set; }
}
}
I get Errorcontext.SaveChanges()
What could it be?An error occured while starting a transaction on the provider connection.
SQLite Error \r\n cannot start a transaction withing a transaction