将数据库名称或整个数据库作为变量传递

时间:2018-12-28 03:25:28

标签: c# database linq variables

我正在通过提取函数来重构代码。

最初,我有一个巨大的main函数,该函数立即使用从第一行从外部传入的dbName来获取数据库,然后基于数据库执行其他操作。

现在,我想使其他东西成为现在更小的主函数调用的一些小函数。

那些小的功能需要访问相同的数据库。

我-

  1. 每次调用一个小函数并在其中获取数据库

    时都传递dbName
    • 这似乎有些多余,如果我有n个小函数,那么我需要n次获取数据库
  2. 将整个数据库传递给该小函数并立即使用

    • 这会导致性能问题吗?

另一个问题:

我知道我们可以使用

var table = database.GetCollection<table>() 获取并将表存储到变量中,这样我们就可以使用它,而不用每次想要查找时都重新获取它。

但是当我要执行的操作是修改时,它起作用吗?

如果我使用table 插入然后找到,我可以获得我刚刚插入的记录吗?

我的意思是,table是指插入之前的表格吗?

1 个答案:

答案 0 :(得分:0)

鉴于您所提供的信息,您的选项2很可能是解决方法。

您将不会将整个数据库传递给函数,因为大多数对象都是通过引用传递的,而不是通过值传递的(除非它们是ValueType)。

table应该是对表的引用(例如DbSet<tablename>),而不是当前状态的表(如果您希望调用table.ToList(),则该表应返回{{ 1}}并将其存储。)

因此,先调用List<tablename>然后再调用table.Add(object)应该返回数据库中当前的对象