属性未在部分实体类的报表设计器中显示

时间:2012-04-27 15:04:13

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

我在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;
            }
        }
    }

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

enter image description here

如何在不创建其他视图的情况下实现此目的?

非常感谢提前。

编辑1(两个在同一名称空间中):

enter image description here

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您确实需要确保两个类都位于同一名称空间中。

您可以考虑创建一个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?

答案 2 :(得分:0)

我对Linq2Sql有完全相同的问题。自定义分部类中的所有属性在报表设计器中都不可见。

解决问题

  1. 打开* .dbml的“属性”对话框,然后清除“自定义工具”&#39;属性。然后* .designer.cs文件消失。
  2. 在&#39;预构建活动&#39;中使用sqlmetal.exe。手动生成* .designer.cs

      

    sqlmetal / namespace:&#34; $(ProjectName)&#34;   /code:"$(ProjectDir)DataModel.designer.cs"   &#34; $(PROJECTDIR)DataClasses1.dbml&#34;

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