Visual Web Developer 2008 不会从 Linq 自动生成类

Posted

技术标签:

【中文标题】Visual Web Developer 2008 不会从 Linq 自动生成类【英文标题】:Visual Web Developer 2008 won't auto generate classes from Linq 【发布时间】:2009-10-14 10:31:03 【问题描述】:

我是 Linq 和 Visual web developer 2008 Express 的新手。我在这里阅读了一些帖子和 Scott Guthrie 关于设置 Linq 的文章,但我有点卡住了,因为这些类并没有像我想象的那样自动生成。我已经设置了一个带有简单表的数据库(以主键作为 ID,并且它设置为自动递增)以及其他一些列,并将其拖放到 DBML Linq 设计器窗格中。该表出现在窗口中,但没有自动生成类。当我右键单击表格并选择“查看代码”时,会显示DataClasses.cs,但我只看到一个没有方法或属性的部分类。

Linq 不应该这样做,还是我(很可能)完全错过了这一点?还是 Visual Web Developer 2008 Express 中没有此功能?

【问题讨论】:

我确定他是这个意思。重新标记。 所以,@Hewie,您现在所做的就是支持所有对您有帮助的答案,并接受其中一个解决了您的问题的答案。要投票,请点击每个答案左侧数字上方的向上箭头。 (只是一点 SO 文化介绍。欢迎加入)。 谢谢。我勾选了回复但无法投票,因为我还没有足够的代表:(哦,好吧,谢谢:) 还有 10 个。这会有所帮助。 :-) 【参考方案1】:

不,你没有错过任何东西。这正是它应该如何工作的。转到解决方案资源管理器,展开 dbml,然后双击whatever.designer.cs。在底部,您会看到...

[Table(Name="dbo.YourTable")]
public partial class YourTable: INotifyPropertyChanging, INotifyPropertyChanged


    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

...以及您的所有财产。

【讨论】:

谢谢 - 一切都在那里 :)【参考方案2】:

正如其他回答者已经指出的那样,您确实可以将代码生成到单个 (modelname).designer.cs 文件中。

这可能是也可能不是你所期望和想要的——如果你能忍受的话——完美!

如果没有,至少有一组代码生成模板称为PLINQO,它基于众所周知的代码生成器 CodeSmith。这些模板允许您做很多标准 Linq-to-SQL 不支持的事情:

将每个表的类生成到用户可定义文件夹中各自的单个文件中 实际上更新您的 DBML 模型和所有相关生成的类(如果基础数据库发生更改) 添加“(entityname)Manager”类来管理给定类型的实体(如客户等)

总而言之,它是处理 Linq-to-SQL 代码生成的一个非常巧妙的解决方案。很棒的东西 - 推荐!

马克

【讨论】:

【参考方案3】:

如前所述,LINQ-To-SQL 实际上不会为您生成单独的类文件 - 如果您编写一些代码来引用您的一个表的类,您会发现它就在那里......

【讨论】:

谢谢 - 我希望看到一堆类文件生成,但我可以看到这些类是可以访问的 :)

以上是关于Visual Web Developer 2008 不会从 Linq 自动生成类的主要内容,如果未能解决你的问题,请参考以下文章

Visual Web Developer 2008 不会从 Linq 自动生成类

使用 Microsoft Visual Web Developer Express 2008 创建站点时出现问题

Visual Web Developer 2008 Express 中的源代码编码

我无法在 Visual Web Developer 2008 Express 上创建新项目

如何在 Visual Web Developer 2008 速成版中查看 LINQ 生成的 SQL?

尝试使用 VB 从 ACCESS 数据库中输出 Visual Web Developer 2008 中的数据