我有2个C#.net应用程序,如 1.数据访问应用程序,其具有连接到DB的实体框架工作数据模型。 2.一个Web应用程序,它将包含第一个应用程序的DLL并通过调用dll
中的函数来获取数据我需要从第二个应用程序Web配置文件中获取连接字符串并将其传递给第一个应用程序。在第一个应用程序中,应根据第二个应用程序的连接字符串检索数据。
答案 0 :(得分:1)
有很多方法可以实现这一目标。一个(我不会在这里讨论)是通过某种引导加载器 - 你通过存储库的构造函数(或数据上下文)传递连接字符串,或者你可以构造一个SqlConnectionStringBuilder
({{ 3}})。
如果您想保持简单,请将连接字符串存储在Web应用程序的web.config
文件中,将密钥设置为对象的名称。因此,假设您已使用名为DbContext
的对象扩展MyDbContext
。在web.config中,您将拥有以下作为连接字符串
<add name="MyDbContext" connectionString="<conn string>" providerName="System.Data.SqlClient" />
实体框架将自动使用此连接字符串,因为键与您的上下文相同。
答案 1 :(得分:0)
如果dll要充当数据访问层,它应该检索数据并将其传递给Web应用程序。不是相反。
如果您选择以这种方式执行此操作,则必须创建一个函数,从dll的app.config中检索连接字符串并将其传递给Web应用程序。
要访问程序集的配置文件中的连接字符串,请使用ConfigurationManager类(与将在Web应用程序中使用的WebConfigurationManager类相对)。它使用相同的调用访问相同配置的配置元素,仅用于通用配置读/写。
编辑:正如@PaulAldred-Bann所提到的,连接字符串“应该”存储在Web应用程序配置文件中,如果在Web应用程序中也需要它。程序集仍然可以访问它(您只需将设置从app.config移动到web.config。可以从那里访问它的原因是,程序集在被引用时代表调用者(在这种情况下,网络应用程序)。