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的功能,是否可以使用()在其他地方移动它,所以不是每个函数都必须包含这一行?
您可以使用这样的方法来避免重写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)
如果这对你有所帮助