你把链接字符串加密,des,rsa等都可以,然后在读的时候解密

解决方案 »

  1.   

    这里有源码,可以参照一下:http://www.codeproject.com/Articles/20398/Encrypt-and-Decrypt-ConnectionString-in-app-config
      

  2.   

    是这样,EF对ConnectionString 的解析是自动的,并不是由我们自己写代码来控制,所以问题就在这里。
    我们可以对ConnectionString 加密,但EF取到的是加密串,因此无法解析并使用。
      

  3.   

    看看这个:http://download.csdn.net/detail/z________/3814260
      

  4.   

    兄弟,请先看我回复。这个方法不行的。平常怎么加密解密我知道的。我用的是EF框架。EF框架下的加密解密你处理过吗?你给的这个没有提及说是EF框架下的解决方案,应该是不行的。
      

  5.   

    给你看一个加密配置文件的方法
    http://msdn.microsoft.com/en-us/library/system.configuration.rsaprotectedconfigurationprovider.aspx
      

  6.   

    如果是这样,楼主弄明白一个机制这个问题就能解决了..
    EF会自动采用与DbContext派生类名称相同的连接字符串, 但是你可以手动提供给它连接名称或连接字符串。
      

  7.   

    你这个似乎也没解决问题。我刚才说了,普通加密解密我会的。但我是对EF框架不熟悉,因为EF框架取connectionString自动解析,并连接数据库,不需要我自己写连接代码。所以我无法在EF连接数据库之前进行connectionString解密。
    要了解过EF的兄弟,才能提出精准的解决方案。
      

  8.   


    自己去看一下DbContext那几个构造方法就明白了。
      

  9.   

    我让同事去研究了,他说不行,原因是:xxx  10:13:52
    构造函数我看过,
    Db连接字符串,这个属性没公开.....
    不能手动赋值
      

  10.   

    那个是构造方法啊,跟属性什么的完全没联系啊,实例化的时候给它提供一个连接字符串就行了啊public DbContext(string nameOrConnectionString);
      

  11.   

    原构造函数:
      public NorthwindEntities(): base("name=NorthwindEntities")
            {
            }
    修改成:
      public NorthwindEntities()
                : base("metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string='data source=192.168.1.101;initial catalog=Northwind;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework'")
            {
            }我这里只是个例子,你可以用其他方法来代替了 原构造函数的参数"name=NorthwindEntities"。
    这个连接字符串可以写死在程序里面,也可以加密了写在配置文件,使用时再解密。
      

  12.   

    ef可以手动处理这些参数 不是必须要自动的
    重写继承dbcontex的类的构造方法就可以了
      

  13.   

    楼主的问题,通过重写下构造函数就可以解决了。我现在想搞清楚一个问题,EF的数据库连接怎么管理,我以前都是一个单独的连接池。EF中我怎么把以前的连接池用进来
      

  14.   

    不要在config文件中保存密码,在代码中设置连接参数,代码如下:
    //设置EF连接串
                EntityConnectionStringBuilder ecb = new EntityConnectionStringBuilder();
                ecb.Metadata = "res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl";
                ecb.Provider = "System.Data.SqlClient";
                ecb.ProviderConnectionString = "data source=DatabaseServerName;initial catalog= DatabaseName;persist security info=True;user id=sa;password=YourPassword;multipleactiveresultsets=True;App=EntityFramework";            YourEntity YEntity = new YourEntity(ecb.ConnectionString);
      

  15.   

              EntityConnectionStringBuilder ecb = new EntityConnectionStringBuilder();
                ecb.Metadata = "res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl";
                ecb.Provider = "System.Data.SqlClient";
                ecb.ProviderConnectionString = "data source=DatabaseServerName;initial catalog= DatabaseName;persist security info=True;user id=sa;password=YourPassword;multipleactiveresultsets=True;App=EntityFramework";            YourEntity YEntity = new YourEntity(ecb.ConnectionString);
      

  16.   

    谢谢!就仿IDE有密码时的串,自己再生成就是。
      

  17.   

     public MovieDBContext()
                //: base("name=DefaultConnection")        {
                  var con = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
    // 解密:con+='xxxxxxxxx';              
    base.Database.Connection.ConnectionString = con;        }