你能在Linq-to-SQL中的多个实体中使用相同的Enum吗?

时间:2010-03-09 11:50:38

标签: c# linq-to-sql enums

在我的持久层中,我已声明加载Enums来表示包含引用数据的表(即数据永远不会更改)。

在Linq2SQL中,我能够将实体属性的类型设置为枚举类型并且一切都很好,但是只要我将第二个实体的属性设置为使用相同的枚举类型,代码生成器(MSLinqToSQLGenerator)就会启动生成一个空代码文件。

我认为MSLinqToSQLGenerator正在悄然崩溃。问题是为什么,是否有任何解决方法?还有其他人遇到过这个问题吗?

2 个答案:

答案 0 :(得分:2)

你的枚举是否有机会出现在与dbml相同的文件中? 3.5中有一个错误(在4.0中已修复),其中冲突导致空文件。奇怪的是,通常移动using指令(并右键单击;运行自定义工具)可以修复它。

所以如果你有“foo.dbml”和你自己的“foo.cs”(在同一个文件夹中):

using System;
namespace MyNamespace {

}

它会中断(生成一个空的foo.designer.cs)。如果你有:

namespace MyNamespace {
    using System;

}

它会起作用。我不是在开玩笑。同样,将“foo.cs”重命名为“bar.cs”(并右键单击,运行自定义工具)将修复它。

答案 1 :(得分:0)

奇怪的是,我发现这种行为只发生在一个名为“GrantType”的枚举上。一旦更改了枚举的名称,生成器就会重新开始工作。