.NET Core 8 и Entity Framework Core вызывают хранимые процедурыC#

Место общения программистов C#
Ответить
Anonymous
 .NET Core 8 и Entity Framework Core вызывают хранимые процедуры

Сообщение Anonymous »

Я работаю в .NET уже около 20 лет и сейчас пытаюсь изучить Entity Framework Core, потому что кажется, что это путь будущего. При этом, я думаю, я все еще немного застрял в прошлом, потому что считаю, что фильтрация данных должна выполняться SQL-сервером, а не веб-сервером.
Итак, я Я облегчаю себе задачу, пытаясь использовать Entity Framework Core как замену объектам подключения и команд, которые я использовал в прошлом.
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();

using (SqlConnection conn = new SqlConnection("Server=;Database=;Trusted_Connection=True;"))
{
conn.Open();
SqlCommand cmd = new SqlCommand("GetBadges", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameterCollection parms = cmd.Parameters;
SqlParameter parm = new SqlParameter();
parm.ParameterName = "@toonid";
parm.Value = inbnd.toonId;
parms.Add(parm);

da.SelectCommand = cmd;
da.Fill(ds);
}

Вопрос: как я могу использовать Entity Framework Core для достижения этой цели?
Пока все, что мне удалось сделать, это вызвать Entity Framework Ядро с хранимой процедурой, но если хранимая процедура возвращает что-то, что не является частью объекта, оно игнорируется.
Мои хранимые процедуры обычно возвращают разные столбцы, и в некоторых местах я мы работали, мы делали много динамического SQL, который возвращал разные структуры (даже исходящие из одного и того же хранимая процедура) с различными отправленными параметрами. Поэтому ответы, которые я ищу, требуют общих решений или дайте мне знать, что это невозможно. Пожалуйста, пошагово, потому что, хотя я не новичок в программировании, я новичок в Entity Framework Core.
Изменить:
Спасибо, я не заметил разные тики.
Изменить:
Как я уже упоминал, в одном месте, где я работал, использовалось много динамического SQL и была таблица для каждой подписки на журнал, и в этой таблице было конкретные свойства журнала (демография, если хотите), которые .Net может будет смотреть только в том случае, если просматривается конкретный журнал.
Итак, для этого примера:
create table pub1table (subscriber_id int, subscription_length int,...,hasMultipleCars char(1))

create table pub2table (subscriber_id int, subscription_length int,...,linkedInURL varchar(255))

create proc dbo.GetSubscriptionInfo
@pub_id char(3),
@subscriber_id int
as
declare @sql varchar(max) = 'select * from ' + @pub_id + 'table where
subscriber_id = ' + convert(varchar(50), @subscriber_id)
exec(@sql);

Завершить редактирование
Изменить: Хотя в моем примере не будет использоваться оптимизатор SQL, он не будет (в тех случаях, когда весь код был статическим) EF также не сможет использовать оптимизатор SQL?
Изменить: Возвращаясь немного к части моего первоначального вопроса, бывают случаи, когда я извлекаю несколько списков в одной хранимой процедуре ( как список состояний и список префиксов (Мистер, миссис, мисс и т. д.) и все это за один вызов базы данных. Я не видел, как EF может справиться (за один вызов) с этой ситуацией (или я просто еще не дошел до этого в своих исследованиях). )?
create proc dbo.GetScreenDetails
@pub_id char(3)
as
select *
from dbo.States;
select *
from dbo.Prefixes;
select *
from dbo.publicationDetails
where pub_id = @pub_id;


Подробнее здесь: https://stackoverflow.com/questions/791 ... procedures
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»