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.Blogs
14                                 orderby b.Name
15                                 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类的实现。

posted @ 2016-06-17 10:28  xp1056  阅读(1371)  评论(0编辑  收藏  举报