在每个函数中使用DataContext

ype*_*per 4 c# sql datacontext

我有一个处理所有数据库操作的类.我已经读过,最好将多个DataContext实例用于不同的读/写/更新/删除操作,而不是一个长时间使用的DataContext实例.

这意味着在数据库上执行读/写/更新/删除的每个函数都需要这样做:

    public int GetSomeID(string name)
    {
        using (XXDataContext context = new XXDataContext(connStr))
        {
            ...
        }
    }

    public int GetAnotherID(string name)
    {
        using (XXDataContext context = new XXDataContext(connStr))
        {
            ...
        }
    }

    public void WriteSomething(string text)
    {
        using (XXDataContext context = new XXDataContext(connStr))
        {
            ...
        }
    }
Run Code Online (Sandbox Code Playgroud)

反对只在构造函数中使用this()并将上下文作为私有成员变量可用于每个函数调用.

保持每个函数调用创建一个新的DataContext的功能,是否可以使用()在其他地方移动它,所以不是每个函数都必须包含这一行?

Ser*_*rvy 6

您可以使用这样的方法来避免重写using代码:

private static void WithContext(Action<XXDataContext> action)
{
    using(XXDataContext context = new XXDataContext(connStr))
        action(context);
}    
private static T WithContext<T>(Func<XXDataContext, T> function)
{
    using(XXDataContext context = new XXDataContext(connStr))
        return function(context);
}
Run Code Online (Sandbox Code Playgroud)

这允许你写:

public int GetSomeID(string name)
{
    WithContext(context => 
        {
            //TODO use context
        });
}
Run Code Online (Sandbox Code Playgroud)

如果这对你有所帮助