/******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Robert Simpson (robert@blackcastlesoft.com) * * Released to the public domain, use at your own risk! ********************************************************/ namespace SQLite.Designer { using System; using Microsoft.VisualStudio.Data.AdoDotNet; using Microsoft.VisualStudio.Data; using Microsoft.Win32; internal class SQLiteConnectionProperties : AdoDotNetConnectionProperties { private static System.Reflection.Assembly _sqlite = null; static SQLiteConnectionProperties() { AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); } private static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { if (args.Name.StartsWith("System.Data.SQLite", StringComparison.InvariantCultureIgnoreCase)) { return SQLiteAssembly; } return null; } internal static System.Reflection.Assembly SQLiteAssembly { get { if (_sqlite == null) { using (RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\.NETFramework\\v2.0.50727\\AssemblyFoldersEx\\SQLite")) { if (key != null) { _sqlite = System.Reflection.Assembly.LoadFrom(System.IO.Path.Combine(key.GetValue(null).ToString(), "System.Data.SQLite.DLL")); } } } return _sqlite; } } public SQLiteConnectionProperties() : base("System.Data.SQLite") { } public SQLiteConnectionProperties(string connectionString) : base("System.Data.SQLite", connectionString) { } public override string[] GetBasicProperties() { return new string[] { "Data Source" }; } public override bool IsComplete { get { return true; //if (!(this["Data Source"] is string) || // (this["Data Source"] as string).Length == 0) //{ // return false; //} //return true; } } public override bool EquivalentTo(DataConnectionProperties connectionProperties) { return base.EquivalentTo(connectionProperties); } } }