質問

.NET RIA Services July Previewを使用して、Silverlightクライアントとサーバー間で通信します。私のサーバーには、SilverlightアプリケーションをホストするASP.NETプロジェクトがあります。 ASP.NETアプリケーションには、Hourというテーブルを持つLinq-to-Sql DataModelがあります。 Hour.shared.csを作成して、3つのプロパティを持つHourエンティティを拡張しました:

public partial class Hour
{
   public string CustomerName { get; set; }
   public string ProjectName { get; set; }
   public string FullProjectName { get { return this.CustomerName + " - " + this.ProjectName; } }
}

私のドメインサービスには、GetHoursというgetメソッドがあります。 Linqの設計により、Hourエンティティの新しいインスタンスを明示的に作成することはできず、新しいエンティティを通じて新しいプロパティの値を設定します。

var query = from hours in this.Context.Hours
            select new Hour()
            {
               HourID = hours.HourID,
               ProjectName = "Hello World"
            };

時間を選択するだけで正常に機能しますが、ProjectNameとCustomerNameを何らかの方法で設定する必要があります。

これを回避する方法についてのアイデアはありますか?

役に立ちましたか?

解決

前回、私の答えをもう一度試してみました。

おそらくこれを行う最も簡単な方法は、関数を使用することです:

public Hour PopulateHour(Hour hour)
{
  hour.CompanyName = "xyz";
  hour.ProjectName = "123";
  return hour;
}

次に、linqクエリでこれを使用できます。

var query = from hour in this.Context.Hours
            select PopulateHour(hour);

これを簡単にする方法の1つは、HourクラスのプロパティとしてCompanyIdとProjectIdが既にある場合です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top