gpt4 book ai didi

c# - 在每个函数中使用 DataContext

转载 作者:太空狗 更新时间:2023-10-30 00:52:08 27 4
gpt4 key购买 nike

我有一个处理所有数据库操作的类。我读到过,最好将多个 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))
{
...
}
}

反对仅在构造函数中使用此 using() 并将上下文作为私有(private)成员变量可用于每个函数调用。

在保留每次函数调用时创建新 DataContext 的功能的情况下,是否可以将此 using() 移动到其他地方,以便不是每个函数都必须在其中包含这一行?

最佳答案

您可以使用这样的方法来避免重写 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);
}

这允许你写:

public int GetSomeID(string name)
{
WithContext(context =>
{
//TODO use context
});
}

如果对你有帮助的话。

关于c# - 在每个函数中使用 DataContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23366816/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com