Mon problème est que lorsque j'ai suivi 2 questions, la 1ère one ne remplit pas la propriété campagne, mais la 2e première. Voici mon code;
public class MSReport
{
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public int CampaignID { get; set; }
public MSReport()
{
// CampaignID = 0 here
// doing something with CampaignID here like setting some calculated properties.
}
}
3 Réponses :
Peut-être que le constructeur par défaut fonctionne avant l'initialisation des paramètres? Essayez d'ajouter constructeur dans MS Signaler avec vos params et débogage.
select new MSReport(g.Key) { StartDate = d1, EndDate = d2 }
Lorsque vous utilisez la syntaxe d'initialisateur d'objet, les valeurs spécifiées dans l'initialiseur sont définies après l'exécution du constructeur de l'objet. Si vous avez besoin des valeurs que vous essayez de remplir pour être disponible pour être disponible pour le constructeur, vous devez ajouter une forme de constructeur qui prend les valeurs comme des arguments et remplit les champs ou les propriétés elles-mêmes.
Dans votre classe: P >
var query = from c in _context.MCTargets where c.TargetDateFrom==d1 && c.TargetDateTo<=d2 group c by c.MarketingCampaignID into g select new { CampaignID = g.Key, StartDate = d1, EndDate = d2 }; IEnumerable<MSReport> queryMSReports = from item in query.AsEnumerable() select new MSReport(item.CampaignID, item.StartDate, item.EndDate);
Eh bien, il dit maintenant - "Seuls les constructeurs et initialisateurs sans paramètre sont supportés par Linq aux entités."
Le lien suivant contient une explication de la raison pour laquelle cela se produit et un moyen de contourner l'entourage: social.msdn.microsoft.com/forums/en-us/adodototentityframew ork / ...
Voici un exemple .... où Appmodel.shapeTypes code> est une entité de Cadre d'entité . p>
p> p>
Quel problème rencontrez-vous lorsque vous utilisez la première requête?
J'ai mis à jour la question. La propriété campagne n'a pas été renseignée par G.Key sur la première requête.