【问题标题】:Visual Web Developer 2008 won't auto generate classes from LinqVisual Web Developer 2008 不会从 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 个。这会有所帮助。 :-)

标签: linq-to-sql visual-studio-express visual-web-developer auto-generate


【解决方案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 实际上不会为您生成单独的类文件 - 如果您编写一些代码来引用您的一个表的类,您会发现它就在那里......

    【讨论】:

    • 谢谢 - 我希望看到一堆类文件生成,但我可以看到这些类是可以访问的 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    相关资源
    最近更新 更多