关于PetaPoco中的providerName

ADO.NET里是直接使用了SqlConnection或MySqlConnection,是sql server还是mysql

但在ORM这种东西里,他是通用框架,比如PetaPoco,程序执行的时候不知道是那种数据库,所以connectionString有个providerName,以此来决定是那种数据库

<system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.10.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>  

最好用上面的配置直接在应用程序里配置,而不依赖于机器环境。

如果没有上面的provider定义,那么程序读的是machine.config里的data provider,安装了数据库驱动的(如mysql-connector-net-6.9.6.msi)机器,machine.config会有相应的data provider,且dll会被注册进GAC,程序运行的时候,取的就是GAC里的,安装过的驱动。甚至bin目录下不需要dll

如果应用config有定义data provider,则用应用的,bin下要有dll

这个东西很容易引起版本不同造成的冲突问题。

 

Winform程序在Win7上运行,报异常UnauthorizedAccessException,对路径的访问被拒绝,用管理员权限运行即可。可以设置程序默认需用管理员权限运行。

修改app.manifest里的security

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

  

posted @ 2017-12-13 12:29  chy710  阅读(39)  评论(0)    收藏  举报