#c# #linq #asp.net-core #stored-procedures
#c# #linq #asp.сетевое ядро #хранимые процедуры
Вопрос:
Но я получаю исключение
Требуемый столбец отсутствовал в операции «FromSql»
Это моя хранимая процедура:
ALTER PROCEDURE [dbo].[CIT_UpdateContentSetDetailsProcessStatusByBuildId] @Id BIGINT, @BuildId VARCHAR(100), @SourceId INT AS BEGIN SET NOCOUNT ON; IF (@BuildId IS NOT NULL AND @BuildId != '' AND @BuildId != 'Pending') BEGIN UPDATE [citcontentsetdetails] SET processstatus = 101 WHERE id IN (SELECT CSD.id FROM [citcontentsetdetails] CSD JOIN citbuilddetails BD ON BD.contentsetdetailsid = CSD.id JOIN citbuild B ON B.id = BD.buildid WHERE B.buildid = @BuildId AND SourceId = @SourceId) END ELSE BEGIN UPDATE [citcontentsetdetails] SET processstatus = 101 WHERE id IN (SELECT CSD.id FROM [citcontentsetdetails] CSD JOIN citbuilddetails BD ON BD.contentsetdetailsid = CSD.id JOIN citbuild B ON B.id = BD.buildid WHERE B.Id = @Id) END SELECT 1 END
Мой код:
public void UpdateProcessStatusByBuildId(BuildIDDetailDTO buildDetailsData) { Listlt;BuildIDDetailResultDtogt; source = new Listlt;BuildIDDetailResultDtogt;(); int result; Contract.Requires(buildDetailsData != null); try { if (buildDetailsData != null) { const string defaultId = "@Id"; const string defaultbuildId = "@BuildId"; const string defaultSourceId = "@SourceId"; using (var _context = _contextFactory.CreateDbContext()) { result =_context.Database.ExecuteSqlRaw("CIT_UpdateContentSetDetailsProcessStatusByBuildId @Id={0}, @BuildId={1},@SourceId={2} ", buildDetailsData.Id, buildDetailsData.BuildId, buildDetailsData.SourceId); } } } catch (Exception ex) { throw; } }
Комментарии:
1. К какому столу он
SourceId
принадлежит? i.stack.imgur.com/aLqdN.png2. Он принадлежит таблице CITBuild
3. Можете ли вы выяснить, приводит ли хранимая процедура или код c# к проблеме?
4. Привет, Крошка Ван, я все равно починил его, Спасибо.
5. Это была моя ошибка в C#. SP не может пойти не так, как это было обновление, и SP работает в старом приложении.