关于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" />
浙公网安备 33010602011771号