Выберите New, вызывая «Только конструкторы и инициализаторы без параметров поддерживаются в LINQ to Entities» - PullRequest
0 голосов
/ 01 мая 2020

Я установил POCO, который получает объекты из БД и возвращает их как объект VisionLine. Я получаю сообщение об ошибке " Только конструкторы и инициализаторы без параметров поддерживаются в LINQ to Entities. ". Похоже, это связано с настройкой свойств Words и ClosestMatchingSelectionCollection. Я не уверен, как я могу это исправить или какая у меня альтернатива, чтобы установить значения коллекций Words и ClosestMatchingSelectionCollection

public IQueryable<VisionLine> Get(int lineId)
        {
            return from u in db.ComputerVisionLines
                where u.lineID == lineId
                   select new VisionLine()
                   {
                       VisionLineId = u.LineID,
                       Text = u.Text
                       Words = new ObservableCollection<VisionWord>(from w in u.ComputerVisionWords.ToList()
                                                                    select new VisionWord()
                                                                    {
                                                                        Text = w.Text,
                                                                        BoundingBox = new ObservableCollection<double>(Array.ConvertAll(w.BoundingBox.Split(','), Double.Parse)),
                                                                        Confidence = w.Confidence,
                                                                        VisionWordId = w.WordID,
                                                                    }),
                       BoundingBox = new ObservableCollection<double>(Array.ConvertAll(u.BoundingBox.Split(','), Double.Parse)),
                       ClosestMatchingSelectionCollection = new ObservableCollection<VisionResult>(from r in u.ComputerVisionResults.ToList()
                                                                                                        select new VisionResult()
                                                                                                        {
                                                                                                            SelectionName = r.SelectionName,
                                                                                                            CouponId = r.CouponID,
                                                                                                            EventId = r.EventID,
                                                                                                            MarketId = r.MarketID,
                                                                                                            SelectionId = r.SelectionID,
                                                                                                            Confidence = r.Confidence
                                                                                                        })
                   };
        }

1 Ответ

1 голос
/ 01 мая 2020

Ваш код переводится в запрос SQL, поэтому Linq To Entities не знает, как перевести ObservableCollection в SQL. Либо попробуйте использовать там обычную коллекцию (например, Words = (from ..).ToList()), либо верните IEnumerable из метода, получающего результаты из БД через .ToList, например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...