Question

J'utilise l'aperçu de juillet des services .NET RIA pour communiquer entre mon client Silverlight et mon serveur. Sur mon serveur, j'ai un projet ASP.NET hébergeant l'application Silverlight. Dans l'application ASP.NET, j'ai un DataModel Linq-to-Sql avec une table appelée Hour. J'ai étendu l'entité Hour avec 3 propriétés en créant Hour.shared.cs:

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

Dans mon service de domaine, j'ai une méthode get appelée GetHours. En raison de la conception de Linq, je ne peux pas créer explicitement une nouvelle instance de l'entité Hour. Par le biais de la nouvelle entité, définissez les valeurs de mes nouvelles propriétés:

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

Si je ne sélectionne que les heures, cela fonctionne très bien, mais je dois définir le nom du projet et le nom du client.

Des idées sur la façon de contourner cela?

Était-ce utile?

La solution

Réessayant ma réponse, la dernière fois, je me suis figé.

La méthode la plus simple consiste probablement à utiliser une fonction:

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

Vous pouvez ensuite l'utiliser dans votre requête linq:

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

Une chose qui faciliterait cela serait si vous aviez déjà les identifiants CompanyId et ProjectId en tant que propriétés de la classe Hour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top