我需要在安装过程中修改machine.config。我知道,我需要使用XMLConfig组件,但对我来说一切都不清楚:
正如我所知,util:XmlConfig标签应放在Component标签内。组件标记应放在Directory标记内。我是否应该创建具有唯一ID的目录定义标记,以便与util:XmlConfig一起使用?你可以提供非常小的样本,包括我应该在我的案例中使用的整个组件和目录定义,让我了解它是如何工作的吗?
我需要修改machine.config文件,路径是这样的:
文件= “[WindowsFolder] Microsoft.NET \框架\ V2.0.50727 \ CONFIG \ machine.config中”。
但提供这样的路径是个好主意吗?也许我宁愿自动获取此路径(我的意思是.net框架版本号) - 这可能吗?
我需要在machine.config中添加条目DbProviderFactories。如果要添加的条目已存在于文件中,该怎么办?它们会被添加,更换?如果他们将被添加两次,我该如何防止这种情况?
答案 0 :(得分:0)
如果您需要(我猜)只使用Entity Framework,则不应修改machine.config文件。这可能很危险,因为您可能会无意中使其不一致。
相反,您可以执行以下操作:
获取已由CLR读取的配置数据:
var dataSet = ConfigurationManager.GetSection("system.data") as System.Data.DataSet;
然后检查此表中的第一个表和第三列,以获取提供商的不变名称:
bool bFound = false;
foreach (DataRow row in dataSet.Tables[0].Rows)
{
if (row[2].ToString() == "EFOracleProvider")
{
bFound = true;
break;
}
}
// if this provider is not already listed in the table, then add it
// set oracle provider parameters
if (!bFound)
{
dataSet.Tables[0].Rows.Add(
provName,
provDesc,
provInvariant,
provAssembly
);
}
当然,你应该在之前创建第一个ObjectContext。