0

我是 MVC 概念的新手,并且将数据与控制器逻辑分开。我正在使用 Linq to Sql - 现在我创建了一个新的 DbContext 实例,然后使用它从控制器查询数据库。我必须在我的代码的不同位置做很多相同的查询 - 所以我的问题是 - 我是否能够在我的模型文件夹中创建一个单独的类,在那里创建我的 dbcontext 的新实例,并创建查询的函数db 在类中,将这些函数公开,然后从我想要的任何控制器调用它们?我想这是一个两部分的问题,我能做到吗,这是连接到数据库的首选方式还是我只是在不同的控制器中编写所有单独的代码?

4

2 回答 2

1

如果您必须多次执行类似/相同的查询,我建议您编译您的 LINQ 查询(该链接适用于 LINQ to Entities,但与 LINQ to SQL 的想法基本相同)。通过重复调用查询,它具有更好的性能。您可以执行类似于以下代码段的操作:

static readonly Func<DbContext, IQueryable<T>> compiledQuery = CompiledQuery.Compile<DbContext, IQueryable<T>>(/*your query goes here*/);
using (DbContext context = new DbContext())
{
    IQueryable<T> results = compiledQuery.Invoke(context);
}

基本上,您可以将这些已编译的查询放入您的DbContext类中,然后使用using语句调用它。

于 2012-12-04T03:14:46.357 回答
0

这正是你想要做的......你想创建一个存储库(可能在一个单独的项目中),这样分离和重用所有控制器中的所有数据访问代码......搜索“存储库模式”......

于 2012-12-04T03:08:42.393 回答