SubSonic 3 Linq projection des types anonymes, mais pas les types de classe
-
20-09-2019 - |
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.