0

この問題について多くの説明を見つけましたが、本当に役に立ったものは何もありませんでした。物事は簡単です。dataModelに2つのテーブルがあります:EventsとTimeStamps、両方ともそれらの間の関係であるフィールドEntryIDを持っています(テーブルは実際にはビューであり、DBで変更を実行することはできず、クエリすることしかできません)。 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 に答える