C#自动注册sqlite ado.net数据库让 及 自定义连接字符串

vista或上述系必须获得系统管理员权限履行以下代码。sqlite.net使用了1.0.66.0,支持ado.net
EF数据模型,下载地址:http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/

安排时要保证System.Data.SQLite.dll和System.Data.SQLite.Linq.dll都当路的输入目录。即你的程序exe文件所在目录。

using System.Configuration;
using System.Xml.Linq;
using System.EnterpriseServices.Internal;

var d = ConfigurationManager.OpenMachineConfiguration().FilePath;
XElement xe = XElement.Load(d);
var dd =
xe.Element(“system.data”).Element(“DbProviderFactories”).Elements(“add”);
if (dd.Where(md => md.Attribute(“name”).Value.Equals(“SQLite Data
Provider”)).Count() == 0)
{
    Publish objPub = new Publish();
    objPub.GacRemove(“System.Data.SQLite.dll”);
    objPub.GacRemove(“System.Data.SQLite.Linq.dll”);
    objPub.GacInstall(“System.Data.SQLite.dll”);
    objPub.GacInstall(“System.Data.SQLite.Linq.dll”);

    xe.Element(“system.data”).Element(“DbProviderFactories”).Add(new
XElement(“add”,
        new XAttribute(“name”, “SQLite Data Provider”), new
XAttribute(“invariant”,
        “System.Data.SQLite”), new XAttribute(“description”, “.Net
Framework Data Provider for SQLite”),
        new XAttribute(“type”, “System.Data.SQLite.SQLiteFactory,
System.Data.SQLite, Version=1.0.66.0, Culture=neutral,
PublicKeyToken=db937bc2d44ff139”)
        ));
    xe.Save(d);
}

以下顺便提供一个自定义ado.net EF的自定义数据库连接方式:

public EntityConnection GetEntityConnection()
{
    EntityConnectionStringBuilder ecsb = new
EntityConnectionStringBuilder();
    ecsb.Metadata =
string.Format(@”res://*/{0}.csdl|res://*/{0}.ssdl|res://*/{0}.msl”,
“Model1”);
    ecsb.Provider = “System.Data.SQLite”;
    ecsb.ProviderConnectionString = @”data
source=data.db;Password=admin”;
    EntityConnection ec = new EntityConnection(ecsb.ToString());
    return ec;
}

使用时:

dataEntities de = new dataEntities(GetEntityConnection());
dataGrid1.ItemsSource = de.userTable;

网站地图xml地图