Question

Je suis assez nouveau pour SubSonic 3 / Linq, et je ne sais pas si je me manque quelque chose d'évident, mais je pense que je suis tombé sur une question de projection. Je suis en train d'exécuter la requête la plus basique, et d'obtenir des résultats corrects retour uniquement lors de l'utilisation des types anonymes. Au moment où j'échanger les types anonymes avec les types de classe régulière, je reçois toutes les propriétés définies à null / zéro. Je Crafting une bibliothèque de classes DAL, donc, malheureusement, les types anonymes ne sont pas une option.

Snippet

using System;
using System.Linq;
using Fruits.Data;

namespace FruitTest {

    class Program {
        static void Main(string[] args) {

            var db = new FruitsDB();

            var fruits = from f in db.Fruits
                         select new FruitView {
                             MyFruitID = f.FruitID,
                             MyFruitName = f.FruitName,
                         };

            foreach (var f in fruits) {
                Console.WriteLine(f.MyFruitID + "\t" + f.MyFruitName);
            }

        }
    }

    public class FruitView {
        public int MyFruitID { get; set; }
        public string MyFruitName { get; set; }
    }

}

Donc, cela ne fonctionne pas (retourne tous les NULLS / zéros)

var fruits = from f in db.Fruits
             select new FruitView {
                 MyFruitID = f.FruitID,
                 MyFruitName = f.FruitName,
             };

Cela fonctionne comme prévu

var fruits = from f in db.Fruits
             select new {
                 MyFruitID = f.FruitID,
                 MyFruitName = f.FruitName,
             };

Mon problème est un peu similaire à href="https://stackoverflow.com/questions/1105052/subsonic-3-linq-projection-issue"> et cette , que je ne fais pas même rejoint; sélectionne tout simples.

Les indices seront très appréciés.

Pas de solution correcte

Autres conseils

Il n'y a pas de véritable réponse à cette question. Je l'ai rencontré ce plus souvent alors pas. maintenir l'ordre d'affectation identique à l'ordre de la lecture de l'aide. c'est à dire. dans le temps de débogage si vous voyez le TexteRequête et voir dans quel ordre les colonnes sont lues à partir db. puis maintenir l'affectation même que l'ordre de sql instruction Select dans TexteRequête. Résout le problème 9 fois sur 10.

Essayez ceci:

IList<FruitView> fruits = (
         from f in db.Fruits
             select new FruitView {
                 MyFruitID = f.FruitID,
                 MyFruitName = f.FruitName
             }).ToList();

ou

IQueryable<FruitView> fruits = 
         from f in db.Fruits
             select new FruitView {
                 MyFruitID = f.FruitID,
                 MyFruitName = f.FruitName
             };

.. et foreach comme avant.

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