EF中的配置
EF中的配置有许多,在这里只介绍需要手动配置的几个:
连接字符串
<connectionStrings> <add name="CloudServiceDbContext" connectionString="Data Source=localhost;port=3306;Initial Catalog=dbCloudService;user id=root;password=111111" providerName="MySql.Data.MySqlClient"/> </connectionStrings>
拦截器
拦截器允许EF在执行数据库操作时运行一些附加的逻辑,下面的代码便是在DatabaseLogger中添加了一个拦截器用以记录所有的数据库操作。
<interceptors> <interceptor type="System.Data.Entity.Infrastructure.Interception.DatabaseLogger, EntityFramework"> <parameters> <parameter value="C:\Temp\LogOutput.txt"/> //Log输出文件 <parameter value="true" type="System.Boolean"/> //文件存在时以Append的方式写文件 </parameters> </interceptor> </interceptors>
Database Initializers
CodeFirst默认使用CreateDatabaseIfNotExits初始化,而context有一个disableDatabaseInitialization属性用来配置不使用数据库初始化。示例如下:
<contexts> <context type=" Blogging.BlogContext, MyAssembly" disableDatabaseInitialization="true" /> </contexts>
也可以配置自定义的初始化类(无参时去掉parameters节点即可),示例如下:
<contexts> <context type=" Blogging.BlogContext, MyAssembly"> <databaseInitializer type="Blogging.MyCustomBlogInitializer, MyAssembly"> <parameters> <parameter value="MyConstructorParameter" /> </parameters> </databaseInitializer> </context> </contexts>
泛型数据库初始化配置,使用CodeFrist迁移时,配置数据库自动迁移到最新,示例如下:
<contexts> <context type="Blogging.BlogContext, MyAssembly"> <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[Blogging.BlogContext, MyAssembly], [Blogging.Migrations.Configuration, MyAssembly]], EntityFramework" /> </context> </contexts>
还有一个比较重要的配置就是provider的配置,而一般来说都可以通过Nuget安装相关库便自动添加到配置文件中,如Mysql下添加provide时,Nuget中输入以下命令:
PM> install-package Mysql.Data.Entity
便可将相应的库引用到项目中,并且将provider添加到配置文件中。