আমি মনে করি আমি বর্তমানে সত্ত্বা ফ্রেমওয়ার্ক 6 এবং সম্ভবত ADO.NET- এ একটি বাগের অভিজ্ঞতা করছি। যেহেতু একটি সময়সীমা রয়েছে তাই আমি নিশ্চিত নই যে আমি এই বাগটি ঠিক হওয়ার জন্য অপেক্ষা করতে পারি এবং আশা করি কেউ আমার চারপাশে পরিষ্কার কাজ করতে সহায়তা করতে পারে।
সমস্যাটি হ'ল কোয়েরিটি যেখানে 0.01 এবং 0.05 হওয়া উচিত সেখানে 1 এবং 5 এর মান ব্যবহার করে। তবে অদ্ভুতভাবে যথেষ্ট 0.1 কাজ করছে বলে মনে হচ্ছে
উত্পন্ন উত্সত বর্তমানে: (এসকিউএল সার্ভার প্রোফাইলার থেকে প্রাপ্ত)
declare @p3 dbo.someUDT
insert into @p3 values(NULL,5)
insert into @p3 values(5,0.10)
insert into @p3 values(NULL,1)
insert into @p3 values(1,2)
exec sp_executesql N'Select * from @AName',N'@AName [dbo].[someUDT] READONLY',@AName=@p3
যদিও সঠিক কোডটি হ'ল:
declare @p3 dbo.someUDT
insert into @p3 values(NULL,0.05)
insert into @p3 values(0.05,0.10)
insert into @p3 values(NULL,0.01)
insert into @p3 values(0.01,0.02)
exec sp_executesql N'Select * from @AName',N'@AName [dbo].[someUDT] READONLY',@AName=@p3
আমি ইতিমধ্যে এখানে গিথুব এ একটি সমস্যা তৈরি করেছি: ব্যবহারকারী নির্ধারিত সারণি ভুল মান সন্নিবেশ করানো
আমি আমার প্যারামিটারাইজড ক্যোয়ারিতে কোনও ব্যবহারকারী সংজ্ঞায়িত টেবিলটি ব্যবহার করতে চাই, এই প্রশ্নটি এটি কীভাবে হয় তা ব্যাখ্যা করে: সত্তা ফ্রেমওয়ার্ক সঞ্চিত প্রক্রিয়া সারণী মান মান পরামিতি
এটি উপরের এসকিউএল কোড পেতে ব্যবহৃত # সি কোড
DataTable dataTable = new DataTable();
dataTable.Columns.Add("value1", typeof(decimal));
dataTable.Columns.Add("value2", typeof(decimal));
dataTable.Rows.Add(null,0.05m);
dataTable.Rows.Add(0.05m,0.1m);
dataTable.Rows.Add(null,0.01m);
dataTable.Rows.Add(0.01m,0.02m);
List<SqlParameter> Parameters = new List<SqlParameter>();
Parameters.Add(new SqlParameter("@AName", SqlDbType.Structured) { Value = dataTable , TypeName= "dbo.someUDT" });
dbContext.Database.ExecuteSqlCommand("Select * from @AName", Parameters.ToArray());
এবং এসকিউএল কোড ব্যবহারকারীর সংজ্ঞায়িত টেবিল পেতে
CREATE TYPE [dbo].[someUDT] AS TABLE
(
[value1] [decimal](16, 5) NULL,
[value2] [decimal](16, 5) NULL
)
সম্পাদনা:
জার্ট আর্নল্ড এটি আবিষ্কার করলেন। তার উত্তরের ভিত্তিতে আমি এখানে একটি বিদ্যমান প্রতিবেদন পেয়েছি এসকিউএল সার্ভার প্রোফাইলার টেক্সটডাটা কলাম দশমিক ইনপুটগুলি ভুলভাবে পরিচালনা করে
Select * from @AName
স্থানধারক হিসাবে। আমি আসলে বড় টেস্টে টেবিলের সাথে যোগ দিচ্ছি যা আমি মনে করি না যে এটি প্রশ্নের সাথে প্রাসঙ্গিক যেহেতু এটি ইস্যুটিকে আরও সহজ ফর্ম্যাটে ইতিমধ্যে প্রতিলিপি করেছে।
Database.SqlQuery
(এর চেয়ে Database.ExecuteSqlCommand
) আমি ক্লায়েন্টে সঠিক মানগুলি পাই!
dataTable.Rows.Add(null,0.05m);
কি এটি চেষ্টা করতে পারেন এবং এটি কী