আমি 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]