2013-09-23 3 views
0

Привет Я использую перекрестное соединение через в ASP .NET Web API с базы данных MySQL и получаю следующее сообщение об ошибке:Использование кросс присоединиться к ASP .NET Web API получаю ошибку

Ошибка 1 Не удается неявно преобразовать тип «системы .Linq.IQueryable 'to' System.Linq.IQueryable '. Явное преобразование существует (вы пропали без вести броска?)

Это мой контроллер кода

private myappEntities db = new myappEntities(); 
    public IQueryable<comment>GetPicturesandtheirCommnets() 
    { 
     var combo=from p in db.picturedetails 
        from c in db.comments 

        select new 
        { 
         p.iduser,p.idpictures,p.likes,p.nuditylevel,p.picTitle,p.pictime,p.fakeslevel, 
         c.comment1,c.ctime,c.idcomments,c.spamlevel,c.targetpictureid 

        }; 
     return combo; 

    } 

Почему я получаю эту ошибку ?? Любая помощь?

ответ

0

Ваш запрос (комбо) возвращает анонимный тип, и ваша подпись метода говорит, что вы возвращаете IQueryable<comment>. Вы не можете возвращать анонимные типы из методов, поэтому у вас есть два варианта:

Вариант 1: выберите только поля из таблицы комментариев для возврата.

Вариант 2: Создайте новый класс, который содержит сведения из комментариев и PictureDetails, и измените свой запрос, чтобы выбрать новый CommentAndPictureDetails (или что бы вы ни называли своим классом).

Измененный запрос будет выглядеть следующим образом:

var combo=from p in db.picturedetails 
        from c in db.comments 

        select new CommentAndPictureDetails 
        { 
         IdUser = p.iduser, 
         IdPictures = p.idpictures, 
         Likes = p.likes, 
         NudityLevel = p.nuditylevel, 
         PicTitle = p.picTitle, 
         PicTime = p.pictime, 
         FakesLevel = p.fakeslevel, 
         Comment1 c.comment1, 
         CTime = c.ctime, 
         IdComments = c.idcomments, 
         SpamLevel = c.spamlevel, 
         TargetPictureId = c.targetpictureid 
        }; 

Ваше объявление класса для CommentAndPictureDetails будет выглядеть примерно так:

public class CommentAndPictureDetails 
{ 
    public string IdUser {get; set;} 
    // I don't know the data types, so you'll have to make sure 
    // the .NET type matches the DB type. 
} 
+0

Я использую базу данных первого подхода, с двумя отдельными столбцами для комментариев и picturedetails , Итак, после использования Варианта 2 будут получены данные из этих двух таблиц в моей базе данных? – Obvious

+0

Данные по-прежнему будут извлечены. Вы просто храните его в объекте передачи данных (DTO), который облегчает логический (в смысле бизнес-логики) состав данных. –

+0

Спасибо, попробуй. – Obvious

Смежные вопросы