আমি ASP.NET MVC 3 (.NET 4.0) অ্যাপ্লিকেশন থেকে একটি এসকিউএল সার্ভার 2008 আর 2 এক্সপ্রেস উদাহরণের বিরুদ্ধে নিম্নলিখিত কোয়েরিটি সম্পাদন করতে ড্যাপার ব্যবহার করছি ।
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)
গেটভ্যালুয়ের প্রত্যাবর্তনটি একটি বক্সযুক্ত ইন্টার এবং ব্যতিক্রম নিক্ষেপ করা হয় না।
আইডি কলামটি অবশ্যই টাইপ ইন্টের; দশমিক কেন SELECT @@IDENTITY
ফেরত আসবে?
কিছু অতিরিক্ত তথ্য:
- ডাটাবেসটি একেবারে নতুন।
- গ্রাহক সারণি হ'ল এটিতে আমি যুক্ত করেছি। ডাটাবেসে অন্য কোনও (ব্যবহারকারী) সারণী, দর্শন, ট্রিগার বা সঞ্চিত পদ্ধতি নেই।
- ডাটাবেসে 10 টি সারি রয়েছে, সেখানে আইডির 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]