0

.NET プロジェクト用の接続ファクトリを設定していますが、最適な方法を教えてください。以前の Log クラスがテーブルの LOCKS のためにログを適切に書き込めないという問題があります (または彼らが言うように)。そのため、(うまくいけば) 他のいくつかのマイナーに沿ってこれを解決する新しいデータ層をセットアップすることを任されています。問題。

今のところ、コード:

public sealed class ConnectionFactory
{
    //Will be SQL only
    private static SqlConnection sqlConnection = null;
    private static string connectionString = ConfigurationManager.ConnectionStrings["Development"].ConnectionString;

    public static SqlConnection GetConnection()
    {
        if(sqlConnection == null)
        {
            sqlConnection = new SqlConnection();
            sqlConnection.Open();
        }
        return sqlConnection;
    }
}

私はほとんどの手順を使用しますが、1 つまたは別の奇妙な要求がある可能性があり、必要に応じてクエリを入力するため、何らかの方法で SqlCommand を追加する必要があると思います。

private static SqlCommand sqlCommand = null;

public static SqlCommand GetCommand()
{
    //Check if sqlConnection is not null (omitted)
    if(sqlCommand == null)
    {
        sqlCommand = sqlConnection.CreateCommand();
    }
    return sqlCommand;
}

しかし、このコマンドは静的である必要がありますか? または、新しいクエリが実行されるたびに新しいクエリを作成する必要がありますか? 主にロックを回避することを考えていますが、複数のコマンドまたは複数の接続のみが原因である可能性がありますか? どうすればこれを回避し、適切に対処できますか?

4

1 に答える 1

0

この場合、「nolock」が機能すると思います...

FROM [table] with (nolock)

直接クエリを実行するたびに。

于 2014-06-11T17:43:50.177 に答える