Tag c sharp

[C#] Dump Object as JSON (Visual Studio)

ทำไมต้อง Dump Object as JSON Dump Object as JSON ใน Visual Studio มีขั้นตอนดึงค่าใน Class / DTO / Object ออกมาเป็น JSON ง่ายๆ ดังนี้ ตอนนี้เราจะได้ JSON ที่สวยงาม พร้อมเอาเอาไปใช้งานต่อแล้วครับ เช่น ถ้าทำเอาไปทำ Test วาง TextFile แล้ว Deserialize กลับมาเป็น Object อีกทีครับ สุดท้าย เป็นไปได้ อยากทำให้ Object…

[C#] ทำ Unit Test กับ XML ครับ

หลายคนยังทำงานอยู่กับตัว XML เวลามีปรับแก้อะไร อาจจะเจอปัญหาว่า Version เก่า ถูก พอเพิ่มข้อมูลอะไรเข้ามาแล้วผิดได้ หนึ่งในทางที่ช่วยลดปัญหา คือ การลงทุนทำ Test จะได้ให้มันช่วยเตือนตอน Regression Test แล้ว มีอะไรแปลกๆ ครับ สำหรับตัว XML มันมี Library ที่ช่วยอยู่ครับ คือ ตัว XMLUnit มีทั้ง ฝั่ง DOTNET และ Java เลยครับ โดยใน Blog นี้ ผมจะเขียนในมุมของ DOTNET ครับ Let’s Test…

[C#] แนวทางแก้ปัญหา The incoming request has too many parameters. The server supports a maximum of 2100 parameters

.NET Core

น่าจะเป็นเรื่องที่ปวดหัวของ Developer ที่ต้องมาทำงาน DBMS ตระกูล Microsoft SQL Server ครับ เวลาส่ง IList เข้าไป Where ผ่าน ADO.NET / Dapper / EF จะเจอปัญหานี้เหมือนกันครับ NOTE: สำหรับตัว EF ทางผมไม่ได้ใช้งานเป็นหลักนะครับ แต่ลอง Search มาเหมือนมีหลายความเห็นบอกว่าเจอเรื่องนี้ หรือไม่เจอครับ sql – Entity Framework Hitting 2100 Parameter Limit – Stack Overflow 2100…

[C#] Attaching an event handler

.NET Core

Blog ตอนนี้ มาจากตอน Review Code แล้วผมพลาดครับ ลองดู Code ได้นะครับ จาก Code ด้านบน ผมจำผิดจริงๆ ผมมองว่า MyEvent_Handle1 ถูกแทนทีด้วย MyEvent_Handle2 เลยทวงตอน Review ไปว่า Logic ของ MyEvent_Handle1 จะหายไปครับ แต่มีโดนแย้งมา เลยมาลองทำ Snippet ลองดีกว่าครับ จริงด้วยครับ ทำงานทั้งคู่เลย เพราะมัน subscribe MyEvent_Handle1 และ MyEvent_Handle2 เรียบร้อยแล้วครับ ตาม ครับ ถ้าลองเกรียนๆ…

[C#] แก้ปัญหา Could not load file or assembly ‘System.ComponentModel.Annotations, Version=X.Y.0.0

C# Logo

ลองทำ Automate Test แล้วเอา json มา mock ข้อมูล พอ execute จริง Error ครับ ตรวจสอบ และแก้ไข – ตรวจสอบว่า Code Reference DLL เวอรชันเดียวกัน หรือ ไม่ ตรวจสอบว่า Solution และ Library ต่างๆที่ Reference มาใช้ System.ComponentModel.Annotations ส่วนตัวเคยเจอว่า Project Library ใช้ 5.0.0 และปรากฏว่า Main Project มา…

[C#] ทำไม Process มันผิดแค่เดือน 12 นะ

calendar dates paper schedule

เรื่องของเรื่องมีอยู่ว่า มี Module ที่เป็น VB6 อันนึง convert มาเป็น .NET มา 4 ปีและ แต่ลูกค้างอแงมาเรื่อยมา ขอว่าถ้าจะแลกต้องให้โน่นนั่นนี่ และจะทดสอบให้ทั้งๆที่มันดีกว่านะ ดึงมาได้ 4 ปีแหละ จนปีนี้เอาออกเลย สรุปทีลูกค้างอแงมาตลอด ไม่ได้ Test 555 แต่มันถูกไป 90% นะ แต่จะมีอยู่เคสนึงที่ตัว Process ถ้าเป็นเดือน 12 จะมีบางเคสที่เลยมันจะผิดเสมอ เลยลองไล่ๆดู มันเพราะอะไรนะ ? VB6 บวกลูกทุ่ง .NET ย้ายมาใช้ DateTime.AddMonth() แทน…

[C#] Dapper Error connection assigned to the command is in a pending local transaction. 

ช่วงนี้มีไปช่วยน้องในทีมแก้ปัญหาระบบซื้อขาย Bond โดยน้องเอา Service เดิมที่เคยทำไว้ในผูกกันเป็น Flow ใหม่ครับ แล้วทีนี้เจอ Error หลังจากลองไล่ดู Code พบว่าเป็นส่วนคำสั่งที่เรียก Dapper ให้มันช่วย Query ให้ เลยเพิ่มตัว Transaction ใส่ครอบเข้าไปครับ อีกเคส ต้องไปใส่ Transaction Scope ด้วย พวก BeginTran / Commit

[C#] Use-Case การใช้งาน Named Pipe เชื่อม VB6 กับ .NET

จาก blog 2 ตอนก่อนหน้า เพื่อนๆ น่าจะเข้าใจ Named Pipe คือ อะไร ? VB6 กับ .NET โดยใช้ Named Pipe ทำได้อย่างไร ใน Blog นีัขอแชร์ Use-Case จริง ที่ใช้งานครับ เพราะคงเอา Code มาแปะทั้งหมดไม่ได้ครับ เผื่อจะเป็น Idea ให้กับคนที่ต้องพัฒนาระบบงานเก่าๆ เอาไปใช้ได้ครับ โดยการพัฒนาของผมจะเป็น 2 Step ซึ่งมีอธิบายต่อไปครับ จุดที่ 1 @Client VB6 <->…

[C#] Named Pipe เชื่อม VB6 กับ .NET

จาก Blog ตอนที่แล้วที่ผมได้อธิบาย Named Pipe ไปว่า ได้ลองนำเทคนิคนี้มาใช้เพื่อแก้ปัญหาของ Legacy System ใน Blog นี้เป็นการขยายความเพิ่มเติม ทำไมใช้ Named Pipe เป็นเทคโนโลยีที่รองรับทั้ง VB6 และ .NET ไม่อยากไปพัฒนาโมดูลใหม่ๆบน VB6 แล้ว เพราะติดปัญหา Maintain ยาก ทำ Unit Test ไม่ได้ด้วย ไปกับเทคโนโลยีใหม่ๆยาก ไม่รองรับมาตรฐานความปลอดภัยใหม่ๆ VB6 ส่งไป .NET ติดปัญหาอะไรไหม ? ปัญหาภาษาไทย ตัว VB6 มันไม่รู้จัก…

[C#] Automate Control.InvokeRequired Code pattern

spaghetti code, DRY

Blog นี้จริงๆ แล้วเป็นการนำ Blog ที่เขียนค้างตอนปี 2014 (ช่วงที่อยู่กับ Project ที่ได้ แต่บ่น 555) มาเขียนต่อให้จบครับ แม้ว่าตอนนี้แนวทางการพัฒนาระบบเป็นแนว Web Application แล้ว แต่ยังมีงานบางส่วนที่ยังเป็น Desktop Application ครับ ปัญหา เวลาจัดการงานด้าน UI มักจะเจอปัญหาที่เจอประจำเลย InvalidOperationException Cross-thread operation not valid. Control accessed from a thread other than the thread it was…