VB:将类分组到命名空间中

时间:2015-03-22 22:33:50

标签: vb.net entity-framework namespaces

在C#中创建文件夹时,进入该文件夹的所有类都将作为其命名空间位于文件夹名称下。或者,使用namespace关键字,我们可以手动定义它们。但是在我创建文件夹的VB中,这不是自动完成的。假设我想添加一个Entity Framework对象,它属于默认命名空间。然后,如果在EF中有登录表,我就不能有一个名为Login的窗口。这会导致很多问题。如何更改edmx文件的命名空间?并防止VB中的命名空间冲突?

1 个答案:

答案 0 :(得分:0)

VB.Net有'我们称之为Root Namespace的东西。 C#有default namespace的地方。

最大的区别在于Root Namespace实际上是根,因此总是会在您在代码文件中定义的所有内容之前添加。

然而,当您添加{C>时,C#将使用默认命名空间将namespace语句添加到您的代码文件中。它还将使用foldername来构建完整的命名空间。

VB.Net在代码文件中不需要命名空间,尽管你可以添加一个来创建一个C#,就像命名约定一样。如果您使用此方法,建议您从项目的属性中清除Root namespace并控制您的背部。

对于生成代码的大多数工具,您通常可以在通过custom tool namespace属性生成代码的自定义工具的属性中配置它。对于实体框架,您应该通过打开edmx文件的属性并向custom tool namespace属性添加内容来更改它。默认情况下这将为空。

但是:默认的T4模板不使用自定义工具命名空间。因此,您需要编辑所有tt模板(通常为YourModel.ttYourModel.context.tt以使用命名空间。我从未能让生成器使用custom tool namespace属性。快捷方式并将此行更改为T4模板:

Dim codeNamespace as String = code.VsNamespaceSuggestion()

到此:

Dim codeNamespace as String = "Your.Desired.Namespace"

不要忘记将解决方案资源管理器设置为Show All files以便找到T4模板。