【发布时间】:2014-05-15 08:01:25
【问题描述】:
我有一个单例(因为我认为让这些始终可用会很有用)来表示一些设置,这将在 clr 过程调用开始时从数据库中清除旧设置并加载新设置。
但如果 CLR 调用像线程一样处理,我可能会在某个时候遇到问题,即设置在我想要访问它们的那一刻被清除。
那么这会是一个问题吗?我可以使用简单的对象锁来解决这个问题吗?
编辑:
代码示例设置:
public class Settings
{
public static Settings Default
{
get { return _default ?? (_default = new Settings()); }
}
private static Settings _default;
private Dictionary<string, string> _settingsDict;
private Settings()
{
_settingsDict = new Dictionary<string, string>();
}
public void ReloadSettings()
{
_settingsDict.Clear();
using (var connection = new SqlConnection("context connetion=true"))
using (var command = connection.CreateCommand())
{
command.CommandText = ...
connection.Open();
// Read Settings with DataReader into _settingsDict
}
}
public string Get(string key) {
get { return _settingsDict["key"] }
}
}
程序:
[SqlProcedure]
public static void InsertData(SqlString csv)
{
Settings.Default.ReloadSettings();
var setting = Settings.Default.Get("SETTING");
using (var connection = new SqlConnection("context connetion=true"))
using (var command = connection.CreateCommand())
{
...
}
}
【问题讨论】:
-
你能展示你的代码吗?
-
如果在您专门谈论 SQL/CLR 的问题中明确表示是个好主意。这目前仅隐藏在标签中。
-
我已经用代码示例和更好的标题更新了问题
标签: c# sql-server clr sqlclr