0

我找到了很多关于这个问题的解释,但没有什么真正帮助我。事情很简单。我的dataModel上有两个表:Events和TimeStamps,都有字段EntryID,这是它们之间的关系(这些表实际上是视图,我不能对数据库执行更改,我只能查询它们)。在我的domainService,我已经创建了从每个表中获取数据的方法。到目前为止,我只能用其中一个表中的数据填充 dataGrid,但我真正需要的是从两个表中显示。在 T-SQL 中它会是这样的:

  Select e.EntryID,t.closed_time
  from Events e inner join TimeStamps t
  on e.EntryID=t.EntryID

所以我想在我的 dataGrid 上显示 Entry_ID 和 closed_time。感谢您帮助解决我的问题

我尝试了一个新的自定义类

    public class CustomTable
    {
        public string EntryId { get; set; }
        public int closed_time { get; set; }
    }

    public IQueryable<CustomTable> GetJoined()
    {
        return (from i in this.ObjectContext.Events                   
                join p in this.ObjectContext.TimeStamps p
                on i.Entry_ID equals p.Entry_ID
                select new CustomTable
                {
                    EntryId = i.Entry_ID,
                    closed_Time = p.Closed_TIME
                });
    }

这是我自己添加的附加代码,我很确定缺少某些东西,此方法和类本身已添加到我的 service.cs

4

1 回答 1

0

这是完成的最终代码和程序,不要忘记在每一步之后构建项目:

1- 在 Myproject.Web 下打开一个新类(添加-->新项目-->类)

namespace Myproject.Web
{

    public class CustomTable
    {
        [Key]
        public string EntryId { get; set; }
        public int closed_Time { get; set; }
    }
}

2-在 IncidentService.cs 上添加:

public IQueryable<CustomTable> GetJoined()
{
    return (from i in this.ObjectContext.Events                   
            join p in this.ObjectContext.TimeStamps p
            on i.Entry_ID equals p.Entry_ID
            select new CustomTable
            {
                EntryId = i.Entry_ID,
                closed_Time = p.Closed_TIME
            });
}

3-添加到 Mypage.xaml.cs

public MyPage()
{
    InitializeComponent();


    this.dataGrid1.ItemsSource = _IncidentContext.CustomTables;
    _IncidentContext.Load(_IncidentContext.GetJoinedQuery());



    DataGridTextColumn entry = new DataGridTextColumn();
    entry.Binding = new System.Windows.Data.Binding("EntryId");
    entry.Header = "Entry Id";

    DataGridTextColumn closed = new DataGridTextColumn();
    closed.Binding = new System.Windows.Data.Binding("closed_Time");
    closed.Header = "Closed Time";

    dataGrid1.Columns.Add(entry);
    dataGrid1.Columns.Add(closed);

}

我希望这能帮助其他有同样问题的人,我花了 3 天时间来解决这个问题!!

于 2012-07-29T08:32:36.080 回答