基於代碼配置的EF6

這裏並不是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);
                });
            }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章