Subsonic 3 LINQ Проецируя анонимные типы, но не типы классов

StackOverflow https://stackoverflow.com/questions/1734146

Вопрос

Я довольно новичок в дозвуковом 3/LINQ и не знаю, упускаю ли я что -то очевидное, но я думаю, что столкнулся с проблемой проекции. Я пытаюсь выполнить самый основной запрос и возвращать правильные результаты только тогда, когда я использую анонимные типы. В тот момент, когда я обменяю анонимные типы на обычные типы классов, я получаю все свойства, установленные на NULL/Zero. Я создаю библиотеку классов DAL, поэтому, к сожалению, анонимные типы не являются вариантом.

Фрагмент

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; }
    }

}

Так что это не работает (возвращает все нули/нули)

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

Это работает как ожидалось

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

Моя проблема несколько похожа на это а также это, только я даже не делаю объединения; Просто простые выбора.

Любые подсказки будут высоко оценены.

Нет правильного решения

Другие советы

На это нет реального ответа. Я сталкивался с этим чаще, чем нет. Сохранение порядка назначения такого же, как и заказ помощи в чтении. т.е. В время отладки, если вы видите QueryText и видите в каком порядке столбцы читаются из DB. и затем сохраните задание таким же, как и порядок оператора SQL SELECT в QueryText. Решает проблему 9 из 10 раз.

Попробуйте вместо этого:

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

или же

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

..а также foreach как прежде.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top