0

我想将连接字符串从 web.config 共享到 app.config 文件以访问数据库中的数据。我在一个解决方案中使用了两个命名空间。

  1. 我的项目(启动)。
  2. 存储库(dll 文件)。

我的数据库存在于存储库命名空间中。

我的web.config是-

 <connectionStrings>
    <add name="MyDBEntity" connectionString="data source=ServerName;initial catalog=MyDatabase;user id=sa;password=password;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient"/>  
  </connectionStrings>

app.config-

  <connectionStrings>
    <add name="MyDBEntity" connectionString="metadata=res://*/DatabaseEN.csdl|res://*/DatabaseEN.ssdl|res://*/DatabaseEN.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=ServerName;initial catalog=MyDatabase;user id=sa;password=password;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

单连接

public class SingleConnection
    {
        private SingleConnection() { }
        private static SingleConnection _ConsString = null;
        private String _String = null;

        public static string ConString
        {
            get
            {
                if (_ConsString == null)
                {
                    _ConsString = new SingleConnection { _String = SingleConnection.Connect() };
                    return _ConsString._String;
                }
                else
                    return _ConsString._String;
            }
        }
        /// <summary>
        /// this function modified web.config connection string
        /// </summary>
        /// <returns></returns>
        public static string Connect()
        {
            string sqlString = System.Configuration.ConfigurationManager.ConnectionStrings["MyDBEntity"].ConnectionString;

            //Build an Entity Framework connection string
            EntityConnectionStringBuilder entityString = new EntityConnectionStringBuilder()
            {
                Provider = "System.Data.SqlClient",
                Metadata = "res://*/DatabaseEN.csdl|res://*/DatabaseEN.ssdl|res://*/DatabaseEN.msl",
                ProviderConnectionString = sqlString.ToString()
            };
            return entityString.ConnectionString;
        }
    }

Global.asax.cs-

public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {

            Repository.MyDBEntity.ConnectionString = SingleConnection.ConString;
            string sqlString = System.Configuration.ConfigurationManager.ConnectionStrings["MyDBEntity"].ConnectionString;
            WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(sqlString, "System.Data.SqlClient", "UserProfile", "ID", "EmailID", autoCreateTables: false);

            AreaRegistration.RegisterAllAreas();
        }
    }

家庭控制器

public ActionResult Contact()
        {
            using(var db  = new MyDBEntity())
            {
                string connection = string.Empty;
                try 
                {
                    IList<string> cnt = new List<string>();
                    foreach (var item in db.Countries) // UnintentionalCodeFirstException.
                    {
                        cnt.Add(item.CountryName);
                    }
                      ViewBag.Message = cnt ;
                }
                catch (Exception ex)
                {
                    ViewBag.Message = ex.Message;
                    return View();
                }

                ViewBag.Message = connection;
            }
            
            return View();
        }
4

1 回答 1

0

在这个问题中有版本问题

我在用着

  1. 我的项目是(EF6)
  2. 存储库 dll(版本 6)

存储库版本 6 是显示UnintentionalCodeFirstException的主要原因

显示,我在版本 5 中转换我们的存储库。它继续运行我的项目。

于 2022-02-11T06:28:37.780 回答