你的位置:首页 > ASP.net教程

[ASP.net教程]EntityFramework 数据库连接可用代码动态设定


摘自:http://blog.csdn.net/dyllove98/article/details/9289553

数据库生成位置可控制(其实主要就是DbContext的构造函数)

1.使用DbContext的构造函数:public DbContext(string nameOrConnectionString)

a、在app.config中添加:

1  <connectionStrings>2   <add name="CodeFirstBlogContext" providerName="System.Data.SqlClient" connectionString="Server=.;Database=CodeFirstBlog;uid=sa;pwd=sa" />3  </connectionStrings>

注:当然这里也可以添加使用其他数据库,但是要提起安装好驱动:引用可参考此文:http://www.cnblogs.com/yylp521/p/3173176.html

b、在数据上下文类中添加构造函数(原来没有显示出现,调用默认的一般是本机.\sqlexpress数据库实例)

1     public BlogContext(string config)2       : base(config)3     {4     }

这里可以显示的引用配置文件中的配置库,注:此处config可以直接写name=CodeFirstBlogContext,是配置文件中的connectionStrings下的name。

2. 使用DbContext的构造函数:public DbContext(DbConnection existingConnection, bool contextOwnsConnection)

a、在数据上下文类中添加构造函数(原来没有显示出现,调用默认的一般是本机.\sqlexpress数据库实例)

1 public BlogContext(DbConnection connection,bool contextOwnsConnection)2       : base(connection, contextOwnsConnection) 3     { }

b、使用时建立一个Connection即可

 1       string connStr = "Server=.;Database=CodeFirstBlog2;uid=sa;pwd=sa"; 2       using (SqlConnection conn = new SqlConnection(connStr)) 3       { 4         using (var db = new BlogContext(conn, false)) 5         { 6           Console.WriteLine("输入一个新的Blog名称"); 7           var name = Console.ReadLine(); 8 9           var blog = new Blog { Name = name };10           db.Blogs.Add(blog);11           db.SaveChanges();12 13           var query = from b in db.Blogs14                 orderby b.Name15                 select b;16 17           foreach (var item in query)18           {19             Console.WriteLine(item.Name);20           }21         }22       }23       Console.ReadKey();

3. 使用数据的连接工厂
1       Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Server=.\sqlexpress;Database=CodeFirstBlog4;uid=sa;pwd=sa");2       using (var db=new BlogContext())3       {4         db.Database.Initialize(true);5         db.Blogs.Add( new Blog { Name = "test" });6         db.SaveChanges();7       }

注:这里指定数据库名称无效,应该与Database的Initialize方法有关,待查证。

  4.这里还有其他的DbContext构造函数可用,可直接查看DbContext类的实现。