使用动态表的LINQ to SQL

时间:2010-07-19 16:54:52

标签: c# dynamic database-design linq-to-sql

我正在开发应用程序VS 2008,.NET 3.5,我正在尝试使用LINQ To SQL。我拖累删除设计器上的表以生成.dbml文件。

我遇到的问题是我有一些用于搜索索引的动态表。

我知道表的结构,只有应用程序创建这样的新表:

Files_1_1, Files_1_2, ... Files_m_n

DataSearch_1_1, DataSearch_1_2, DataSearch_m_n

在这种情况下,mn是表格名称中的整数。

我静态地定义哪些列可用但不是表的名称,所以我需要一种方法来实现这一点。当然,这也必须包括相关的表。

我无法对此有所了解。我也很满意只能为这个表生成LINQ To SQL类。

有没有人遇到过这个问题的解决方案?过去一天,我一直在浏览博客文章和论坛,徒劳无功。任何示例代码对我来说都很棒。

1 个答案:

答案 0 :(得分:2)

链接到sql与存储过程一起使用,设计器将自动为返回类型创建一个类。您可以在sp中使用动态sql并将linq返回给sql类。

您可以创建如下的存储过程:

CREATE PROCEDURE spGetFiles
(
    @TableName
)
AS

EXEC('SELECT * FROM " + @TableName)

然后在Visual Studio O / R设计器中,从服务器资源管理器中选择SP,并以与添加表格相同的方式将其拖到设计器窗口中。将在您的数据上下文类中创建一个与您的SP同名的方法,并且将创建一个名为spGetFilesReturnType的类(我可能有这个命名略有错误,但您明白了)。然后,您只需使用表名作为字符串参数调用datacontext方法,并返回spGetFilesReturnType对象的集合。