मैं एक .NET घटक पर काम कर रहा हूं जो डेटाबेस से डेटा का एक सेट प्राप्त करता है, डेटा के उस सेट पर कुछ व्यावसायिक तर्क करता है, और फिर संग्रहीत प्रक्रिया के माध्यम से डेटाबेस में एकल रिकॉर्ड अपडेट करता है जो spUpdateOrderDetailDiscountedItem
जैसा कुछ दिखता है।डेटाबेस को अद्यतन करने के लिए 368 बार संग्रहीत प्रक्रिया को फायर करने का अच्छा विकल्प क्या है?
डेटा के छोटे सेट के लिए, यह एक समस्या नहीं है, लेकिन जब मैं डेटा की एक बहुत बड़ी सेट है कि डेटाबेस में रिकॉर्ड अपडेट करने के लिए कॉल 368 संग्रहीत proc के एक यात्रा के लिए आवश्यक था, मुझे एहसास हुआ कि मैं एक समस्या थी । एक वरिष्ठ देव ने मेरे संग्रहित प्रो कोड को देखा और कहा कि यह ठीक लग रहा है, लेकिन अब मैं डेटाबेस में "बैच" डेटा भेजने के लिए एक बेहतर तरीका तलाशना चाहता हूं।
बैच में डेटाबेस को अद्यतन करने के लिए मेरे पास कौन से विकल्प हैं? क्या यह संग्रहीत प्रोसेस के साथ संभव है? मेरे पास अन्य विकल्प क्या हैं?
मेरे पास एक पूर्ण ओआरएम स्थापित करने का विकल्प नहीं होगा, लेकिन किसी भी सलाह की सराहना की जाती है।
अतिरिक्त पृष्ठभूमि जानकारी:
हमारे वर्तमान डेटा का उपयोग मॉडल 5 साल पहले बनाया गया था और डाटाबेस के लिए सभी कॉल वर्तमान में ExecQuery
और GetDataTable
जैसे नामों के साथ मॉड्यूलर/स्थिर कार्यों के माध्यम से निष्पादित हो। मुझे यकीन नहीं है कि मैं उस मॉडल के भीतर रहने के लिए आवश्यक हूं, लेकिन मुझे डीबी में जाने के लिए हमारे वर्तमान डीएएल के बाहर जाने के लिए बहुत अच्छा औचित्य प्रदान करना होगा।
ध्यान देने योग्य भी है, जब सीआरयूडी संचालन और डेटाबेस की बात आती है तो मैं बिल्कुल नया हूं। मैं कोड के .NET पक्ष में खेलना/काम करना पसंद करता हूं, लेकिन डेटा को कहीं भी संग्रहीत किया जाना चाहिए, है ना?
संग्रहित प्रोक सामग्री:
ALTER PROCEDURE [dbo].[spUpdateOrderDetailDiscountedItem]
-- Add the parameters for the stored procedure here
@OrderDetailID decimal = 0,
@Discount money = 0,
@ExtPrice money = 0,
@LineDiscountTypeID int = 0,
@OrdersID decimal = 0,
@QuantityDiscounted money = 0,
@UpdateOrderHeader int = 0,
@PromoCode varchar(6) = '',
@TotalDiscount money = 0
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
Update OrderDetail
Set Discount = @Discount, ExtPrice = @ExtPrice, LineDiscountTypeID = @LineDiscountTypeID, LineDiscountPercent = @QuantityDiscounted
From OrderDetail with (nolock)
Where OrderDetailID = @OrderDetailID
if @UpdateOrderHeader = -1
Begin
--This code should get code the last time this query is executed, but only then.
exec spUpdateOrdersHeaderForSkuGroupSourceCode @OrdersID, 7, 0, @PromoCode, @TotalDiscount
End
368 संचालन बहुत कुछ नहीं है। – Fosco
संग्रहीत प्रक्रिया सामग्री को देखने की आवश्यकता है, भले ही सार ... –
लगभग सभी ओआरएम अभी भी 368 डेटाबेस कॉल करेंगे .. वे बस उन्हें बैच करते हैं। – NotMe