मैं ASP.NET MVC 3 (.NET 4.0) अनुप्रयोग से SQL Server 2008 R2 एक्सप्रेस उदाहरण के विरुद्ध निम्न क्वेरी को निष्पादित करने के लिए Dapper का उपयोग कर रहा हूं ।
INSERT INTO Customers (
Type, Name, Address, ContactName,
ContactNumber, ContactEmail, Supplier)
VALUES (
@Type, @Name, @Address, @ContactName,
@ContactNumber, @ContactEmail, @Supplier)
SELECT @@IDENTITY
कॉल को connection.Query<int>(sql, ...)
अमान्य कास्ट एक्सेप्शन फेंक रहा है। मैंने इसे डीबग कर लिया है और यह उस बिंदु पर है जहां डैपर ने कॉल GetValue
किया SqlDataReader
।
वापसी प्रकार , डिबगर शो में इसका निरीक्षण करता GetValue
है Object
, यह एक बॉक्सिंग दशमलव है।
यदि मैं चयन में परिवर्तन करता हूं SELECT CAST(@@IDENTITY as int)
, तो GetValue की वापसी एक बॉक्सिंग इंट है और अपवाद नहीं फेंका गया है।
Id कॉलम निश्चित रूप से int का प्रकार है; एक दशमलव क्यों SELECT @@IDENTITY
लौटाएगा?
कुछ अतिरिक्त जानकारी:
- डेटाबेस एकदम नया है।
- ग्राहक तालिका एकमात्र वस्तु है जिसे मैंने इसमें जोड़ा है। डेटाबेस में कोई अन्य (उपयोगकर्ता) टेबल, विचार, ट्रिगर या संग्रहीत कार्यविधियाँ नहीं हैं।
- डेटाबेस में 10 पंक्तियाँ हैं, वहाँ Id 1,2,3,4,5,6,7,8,9,10 हैं (यानी कॉलम इंट की सीमा से परे नहीं है)।
मेरी तालिका परिभाषा है
CREATE TABLE [dbo].[Customers](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Type] [int] NOT NULL,
[Name] [nvarchar](255) NOT NULL,
[Address] [nvarchar](1000) NOT NULL,
[ContactName] [nvarchar](255) NOT NULL,
[ContactNumber] [nvarchar](50) NOT NULL,
[ContactEmail] [nvarchar](255) NOT NULL,
[Supplier] [nvarchar](255) NOT NULL,
CONSTRAINT [PK_Customers] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]