将LINQ类扩展到我自己在不同命名空间中的部分类?

时间:2010-04-06 21:55:46

标签: linq-to-sql extensibility linq-extensions

我有一个.dbml文件,当然包含基于我的表的自动生成的类。

但是,我想将它们扩展到我自己的课程。通常我设计这样我的每个表都在自己的文件夹中获得自己的命名空间,该文件夹包含所有相关的dao和服务类。因此,如果我处理的页面只与“客户”有关,我只能包含客户。

但是当使用LINQ时,我似乎无法做到这一点。我尝试从项目中删除默认命名空间,我尝试将.dbml文件放入自己的文件夹中,并使用自定义命名空间,然后添加“使用”语句,但没有任何作用。

我还看到了与.dbml文件关联的实体命名空间,上下文命名空间和自定义工具命名空间属性,并尝试将所有这些设置为名称x并在我的其他类中尝试'using x'以允许我扩展分部类,但它只是不起作用。

这是可能的还是我必须将所有扩展的部分类保留在与.dbml文件相同的命名空间中?

2 个答案:

答案 0 :(得分:0)

您必须将所有linq类保留在一个名称空间中。为什么要尝试将DO类放在不同的命名空间中?

答案 1 :(得分:0)

如果类型没有关系,答案很简单:使用多个dmbl文件。如果您需要关系,并且还希望读取多个名称空间。

您可以使用T4模板文件完成此操作。在VS2010中有一个模板来创建一个(它被称为生成器模板或其他东西)。对于VS2008,您可以找到一个on codeplex

您需要对标准模板进行的更改是您需要确保所有属性都使用完全限定名称(因为相关类型现在位于不同的名称空间中)。对于大多数控件,您可以跳过生成的类中的命名空间信息(这样您就可以在部分类中定义它)。