這裏並不是EF的CodeFirst模式,而是把EF配置項從配置文件,移到程序代碼中了,在基於配置文件的程序中,最小化的EF配置有
註冊提供程序、連接工廠、EF框架註冊,如果項目作爲DLL庫需要提供給其它項目使用,那麼在宿主項目的配置文件中,要包含EF的配置項,這是很不方便的,基於代碼配置只需要引用DLL即可,無需在配置文件中配置EF項。
建表
create table student
(
id int primary key auto_increment,
name varchar(100) not null,
class varchar(100) not null,
writetime datetime not null
)
創建DLL庫項目,並安裝EF框架,及Mysql數據庫驅動
EF配置對象,繼承至DbConfiguration。
public class MyDbConfig: DbConfiguration
{
public MyDbConfig()
{
this.SetDefaultConnectionFactory(new MySql.Data.Entity.MySqlConnectionFactory());
this.SetProviderServices("MySql.Data.MySqlClient", new MySql.Data.MySqlClient.MySqlProviderServices());
}
}
數據庫上下文
[DbConfigurationType(typeof(MyDbConfig))]
public class TestDbContext:DbContext
{
public TestDbContext():base("name=test")
{
}
public virtual DbSet<student> student { get; set; }
}
配置文件只需要配置數據庫連接串和ADO.NET提供程序即可
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="test" connectionString="數據庫連接字符串" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
<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.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
</configuration>
using (TestDbContext db = new TestDbContext())
{
db.student.ToList().ForEach(u =>
{
Console.WriteLine(u.name);
});
}