powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP Web API и SqlQuery
16 сообщений из 16, страница 1 из 1
ASP Web API и SqlQuery
    #38787289
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем времени суток!
Разбираюсь с web api 2.

Ниже метод, который возвращает в формате JSON данные из БД таблицы Books. Но возвращает только 1 строку, что очевидно благодаря FirstOrDefaultAsync().
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
    public async Task<Book> GetBook(int id)
        {
            //Book book = db.Books.Find(id);

            string query = "SELECT * FROM Books WHERE Id > @p0";
            Book book = await db.Books.SqlQuery(query, id).FirstOrDefaultAsync();                       
            return book;
        }


А вот как вернуть весь набор данных, а не только первую строку? Что-то ни как не разберусь.
Помогите кто знает.
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38787480
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отвечу сам.
Немного переписал код, теперь возвращает весь набор данных
Код: c#
1.
2.
3.
4.
5.
6.
 // GET api/values/5
        public IEnumerable<Book> GetBook(int id)
        {
            DbRawSqlQuery<Book> book = db.Database.SqlQuery<Book>("select * from Books where id >@p0", id);
            return book;
        }
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38787482
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42,

1. Вы не с Web API разбираетесь, а с Entity Framework;
2. А зачем Вы raw sql используете? Чисто чтобы посмотреть, как это делается в EF?
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38787598
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA , на самом деле разбираюсь и стем и другим.
Вообще задумка такая.
Мне нужно вернуть данные в JSON. Данные рождаются на стороне SQL сервера в большой процедуре.
Вот как раз и разбирался как выполнять процедуры и запросы.
Во всех примерах по WEB API используется простенький класс и одна простая таблица.

Если есть другой правильный способ, рад буду узнать о нем.
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38787605
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42Если есть другой правильный способ, рад буду узнать о нем.Выделить отдельный слой доступа к данным.

А примеры по Web API демонстрируют, как ни странно, функционал Web API, а не как в EF с хранимками работать.
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38787615
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANARAVen42Если есть другой правильный способ, рад буду узнать о нем.Выделить отдельный слой доступа к данным.

А примеры по Web API демонстрируют, как ни странно, функционал Web API, а не как в EF с хранимками работать.

т.е.
1 слой БД
2 слой Работа с БД
3 слой API (работает с слоем №2)

так? или я что-то не недопонимаю?
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38787628
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42skyANAпропущено...
Выделить отдельный слой доступа к данным.

А примеры по Web API демонстрируют, как ни странно, функционал Web API, а не как в EF с хранимками работать.

т.е.
1 слой БД
2 слой Работа с БД
3 слой API (работает с слоем №2)

так? или я что-то не недопонимаю?
ну вообще то да - слой с названием типа DataService, плюс его делать реализацией интерфейса типа IDataService для тестируемости
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38787648
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42skyANAпропущено...
Выделить отдельный слой доступа к данным.

А примеры по Web API демонстрируют, как ни странно, функционал Web API, а не как в EF с хранимками работать.

т.е.
1 слой БД
2 слой Работа с БД
3 слой API (работает с слоем №2)

так? или я что-то не недопонимаю?Хм, обычно это делают примерно так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
namespace MyApplication.DomainModel
{
    public class Person
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Surname { get; set; }
        public string Address { get; set; }
        public IEnumerable<Hobbie> Hobbies { get; set; }
    }
}


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
namespace MyApplication.Data.Interfaces
{
    using DomainModel;

    public interface IRepository<T>
    {
        IEnumerable<T> Find(Specification<T> specification);
    }

    public interface IPersonRepository: IRepository<Person>
    {
    }
}


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
namespace MyApplication.Data
{
    using DomainModel;
    using Interfaces;

    public class PersonRepository : IPersonRepository
    {
        private readonly ObjectContext context;

        public PersonRepository(ObjectContext context)
        {
            this.context = context;
        }

        public IEnumerable<Person> Find(Specification<Person> specification)
        {
            return context.CreateObjectSet<Person>().Where(specification).ToArray();
        }
    }
}


Добавляете контракту IPersonRepository необходимые Вам методы, реализуете их в классе PersonRepository, испльзуя хранимые процедуры.
Берёте IoC контайнер и инжектите IPersonRepository в контроллер, где тупо дёргаете нужный метод, уже не задумываясь о том, как выбираются данные.
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38788156
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, Наверное мы о разных вещах говорим :)
Не совсем понимаю зачем писать так много кода? Если результат будет один и тот же.
Мне всего то и надо было выполнить процедуру и заполнить данными из процедуры структуру.
Что собственно и получается в сообщении 16760043

Может быть raw sql это плохо, но это уже другой разговор.
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38788163
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42Если есть другой правильный способ, рад буду узнать о нем..
вам его и написали. но если он вам не нужен- зачем вы об этом просили ?
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38788223
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42skyANA, Наверное мы о разных вещах говорим :)
Не совсем понимаю зачем писать так много кода? Если результат будет один и тот же.
Мне всего то и надо было выполнить процедуру и заполнить данными из процедуры структуру.
Что собственно и получается в сообщении 16760043

Может быть raw sql это плохо, но это уже другой разговор.Ссылку я Вам уже давал: 16761019 . Репозитоий нужен чтобы скрыть от контроллера логику выборки данных. Незачем контроллеру "знать", что там у Вас, raw sql или не raw sql.

Какой ещё способ Вам надо? :)
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38788225
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAVen42, Вы же сами интересовались слоем работы с БД: 16760520 .
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38788232
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
 // GET api/values/5
        public IEnumerable<Book> GetBook(int id)
        {
            return db.Books.Where(b => b.id > id);
        }
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38788491
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANARAVen42skyANA, Наверное мы о разных вещах говорим :)
Не совсем понимаю зачем писать так много кода? Если результат будет один и тот же.
Мне всего то и надо было выполнить процедуру и заполнить данными из процедуры структуру.
Что собственно и получается в сообщении 16760043

Может быть raw sql это плохо, но это уже другой разговор.Ссылку я Вам уже давал: 16761019 . Репозитоий нужен чтобы скрыть от контроллера логику выборки данных. Незачем контроллеру "знать", что там у Вас, raw sql или не raw sql.

Какой ещё способ Вам надо? :)

Я охотно Вам верю, и спасибо за рекомендации, я же говорю, что только изучаю эту тему и многое ещё не понятно.
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38788547
RAVen42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, кажется я понял про что Вы говорите, после прочтения данного топика

Т.е. мне необходимо вынести всю логику в отдельный слой, а что в этой логике будет RAW или НЕ RAW без разницы. Я правильно Вас понял?
...
Рейтинг: 0 / 0
ASP Web API и SqlQuery
    #38788571
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP Web API и SqlQuery
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]