我有一个应用程序,两个不同的公司将使用。我不想创建两个单独的应用程序,因为当我需要修复错误时,必须在两者上执行它,我可能会松开轨道。
唯一与两家公司不同的是Domain和DBs(连接字符串),换句话说就是单独的网络。如何让应用程序根据用户使用它的位置使用正确的连接字符串?示例,公司A或公司B.我正在考虑使用文本或.ini文件来存储连接字符串。
有人可以帮助或建议同类的东西吗?
提前致谢
答案 0 :(得分:0)
可能这可以帮到你:
最好使用下拉列表选择登录页面上的公司以与用户进行映射。 并且在用户和公司映射的基础上,您可以选择连接字符串。 使用if else子句。
答案 1 :(得分:0)
我认为你可以尝试使用第一个连接字符串连接到DB。如果失败,请使用另一个字符串。这种方法可能存在一些意想不到的问题。
答案 2 :(得分:0)
好吧,假设两家公司的每台机器都属于不同的域(应该是这样),那么你可以使用
检索域名。Environment.UserDomainName
然后以dinamically方式构建连接字符串,例如在应用程序启动时
static class Program
{
public static string CompanyConnectionString;
static void Main()
{
string domain = Environment.UserDomainName;
SqlConnectionStringBuilder sbc = new SqlConnectionStringBuilder();
if(domain == "CompanyA")
{
sbc.DataSource = "ServerForComapanyA";
sbc.InitialCatalog = "DataBaseCompanyA";
... etc ...
... other properties of class SqlConnectionStringBuilder ...
... to exactly compose the connection string required
}
else if(domain == "CompanyB")
{
sbc.DataSource = "ServerForComapanyB";
sbc.InitialCatalog = "DataBaseCompanyB";
... etc ...
... other properties of class SqlConnectionStringBuilder ...
... to exactly compose the connection string required
}
else
{
MessabeBox.Show("Machine domain name not recognized. Unable to connect");
}
Program.ConnectionString = sbc.ConnectionString;
....
现在,您的程序的每个类都可以引用启动类并使用Program.CompanyConnectionString
当然,这项工作也可以移到实用程序类来解决对主类的依赖性
SqlConnectionStringBuilder
Environment.UserDomainName
刚才意识到我不知道你是否使用过Sql Server,但是ConnectionBuilder类也适用于OleDb,Odbc,Oracle以及可能每个其他主要提供商都有相同的
答案 3 :(得分:0)
使用app.config。在部署时,在构建脚本中,更新app.config中的连接字符串,具体取决于部署的发送方式。