C# 将数据库名称或整个数据库作为变量传递
我正在通过提取函数重构代码 最初,我有一个巨大的主函数,它在第一行使用从外部传入的dbName立即获取数据库,然后基于数据库执行其他一些操作 现在我想让这些其他的东西成为一些小函数,由现在更小的主函数调用 这些小函数需要访问同一个数据库 我是否-C# 将数据库名称或整个数据库作为变量传递,c#,database,linq,variables,C#,Database,Linq,Variables,我正在通过提取函数重构代码 最初,我有一个巨大的主函数,它在第一行使用从外部传入的dbName立即获取数据库,然后基于数据库执行其他一些操作 现在我想让这些其他的东西成为一些小函数,由现在更小的主函数调用 这些小函数需要访问同一个数据库 我是否- 每次调用一个小函数时都传递dbName,并在其中获取数据库 这似乎有些多余,如果我有n个小函数,那么我需要获取数据库n次 将整个数据库传递到小函数中,并立即使用它 这会导致性能问题吗 还有一个问题: 我知道我们可以用 var table=da
- 这似乎有些多余,如果我有n个小函数,那么我需要获取数据库n次
- 这会导致性能问题吗
还有一个问题: 我知道我们可以用
var table=database.GetCollection()
获取并将表存储到一个变量中,这样我们就可以使用它,而不是在每次需要查找某个内容时再次获取它
但是,当我想要执行的操作是修改时,它会起作用吗
如果我使用表
插入然后查找,我能得到刚才插入的记录吗
我的意思是,
table
是指我插入之前的表吗?根据您提供的信息,您的选项2很可能是最佳选择
您不会将整个数据库传递到函数中,而只是对它的引用,因为大多数对象都是通过引用传递的,而不是通过值传递的(除非它们是值)
table
应该是对表的引用(比如DbSet
),而不是对处于当前状态的表的引用(如果需要,您需要调用table.ToList()
,它应该返回List
并存储它。)
因此,调用
table.Add(object)
然后调用table.Find(object.ID)
应该返回数据库中当前的对象您使用什么访问数据库?实体框架?我认为你的问题不适合这个网站。在这里,在StackOverflow上,我们通常处理“不工作”代码(至少“工作不符合预期”)。如果你的代码确实有效,并且你想要一个代码检查,你可以尝试一下。这是一个很好的开始将代码划分为功能区域的方法。我认为您正在寻找一个数据访问层。一个单独的类,带有静态方法,负责与数据库的所有通信。数据的大小将决定您可以在数据集和数据表中本地存储多少数据。