【问题标题】:Property not showing in report designer from partial entity class部分实体类的报表设计器中未显示属性
【发布时间】:2012-04-27 15:04:12
【问题描述】:

我在 VS 2010 报表设计器中制作报表,数据的主要来源是 Lines 实体。但我需要来自另一个实体Parts 的额外字段。所以我添加了一个带有额外属性的部分 Line 类,如下所示:

public partial class Line
{
    public string ShelfLocation
    {
        get
        {
            using (RSContext rs = new RSContext())
            {
                return rs.Parts.First(x => x.Code == this.Part).ShelfLocation;
            }
        }
    }

问题是我仍然无法从报表设计器中看到这个额外的字段:

如何在不创建另一个视图的情况下实现这一点?

非常感谢。

编辑 1(都在同一个命名空间中):

【问题讨论】:

  • 您确定部分类与原始类在同一个命名空间中吗?
  • @FelicePollano 是的,两者都在同一个命名空间中。
  • 我对 Linq2Sql 有完全相同的问题。你有能力解决它吗?我的意思是我在部分类中有很多额外的属性,我真的不想手动添加到报表定义中。

标签: c# visual-studio linq entity-framework reporting-services


【解决方案1】:

我不知道是否有更好的解决方案,但暂时我将其手动添加到报告中并且它有效:

<Fields>    
...
    <Field Name="ShelfLocation">
          <DataField>ShelfLocation</DataField>
          <rd:TypeName>System.String</rd:TypeName>
   </Field>
</Fields>

【讨论】:

    【解决方案2】:

    您确实需要确保两个类在同一个命名空间中。

    您可以考虑创建一个 Line 类型的对象并验证您是否可以看到您添加的新属性:

    var testLine = new Line();
    testLine.ShelfLocation  // <-- Does ShelfLocation show up as a valid property? Do your other properties like Debit, Id, etc. also show up?
    

    【讨论】:

    • 是的,它通过了上述测试。上下文和部分类都在 RS 命名空间中。
    【解决方案3】:

    我在使用 Linq2Sql 时遇到了完全相同的问题。自定义分部类的所有属性在报表设计器中均不可见。

    解决问题

    1. 打开 *.dbml 的属性对话框并清除“自定义工具”属性。 *.designer.cs 文件随即消失。
    2. 使用“预构建事件”中的 sqlmetal.exe 手动生成 *.designer.cs

      sqlmetal /namespace:"$(ProjectName)" /code:"$(ProjectDir)DataModel.designer.cs" "$(ProjectDir)DataClasses1.dbml"

    在这些操作之后,其他属性被成功识别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      相关资源
      最近更新 更多