• 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类的实现。

  • 相关阅读:
    fatal error: bits/c++config.h: No such file or directory
    linux 下Beyond Compare 安装
    TD 加载界面实现
    JPA 如何实现 insert ignore
    jsonp 未实现跨域的原因?
    Linux 常用命令
    rancher server偶发504问题排查
    docker清理none image
    docker构建权限问题
    docker containers logs clean
  • 原文地址:https://www.cnblogs.com/xp1056/p/5593188.html
Copyright © 2020-2023  润新知