การเปลี่ยน edmx file ใน .Net

คราวที่แล้ว พูดถึงการเปลี่ยนชื่อโปรเจค คร่าวนี้มาถึงตาที่เราอยากจะแก้ชื่อ edmx หรือ entity data model ที่เป็นไฟล์ XML กันบ้าง ซึ่งโดยปกติ edmx นี้จะสร้างมาจากการ add item ADO.NET Entity Data Model และเมื่อเราสร้างแล้ว เราสามารถให้ VS มันสร้าง file entity .cs ได้ ซึ่งมันก็จะสร้าง 


  • Model Context.tt
  • Model Context.cs
  • Model .tt
ขึ้นมาด้วย ซึ่งชื่อของไฟล์ทั้งหมดก็จะมาจากชื่อของ file .edmx นั่นเอง แต่ถ้าเราจะเปลี่ยนชื่อของ .edmx ก็จะเป็นเรื่องใหญ่ ที่เดียว แต่ก็ไม่ใช่ว่าทำไม่ได้ โดยเรา

1. rename file .edmx 
โดยคลิ๊กขวา ที่ file .edmx แล้วเลือก rename 

2. ลบ ไฟล์ที่เป็น .Context.tt และ .tt ออก
3. สร้างไฟล์ .Context.tt และ .tt ใหม่ โดยคลิ๊กขวาที่ Diagram และ คลิ๊ก "Add Code Generation Item..."


เสร็จแล้ว เลือก version ของ Entity Framework ที่ใช้ ตั้งชื่อไฟล์ .tt กด Add


เสร็จแล้ว ก็อย่าลืมลอง Generate database from model ใหม่อีกทีนะค่ะได้เลยคะ





การเปลี่ยน namespace & project folder ใน .Net

จากความที่เคยเขียน java มา พอมาใช้ .Net รู้สึกถึงความไม่คุ้นอย่างมาก อย่างแรกเลย คือ folder ของ .Net ไม่ได้เกี่ยวอะไรกับ namespace เลยสักนิดเดียว คือจริงๆ จะตั้งตรงกันหรือไม่ตรงกันก็ได้ (ซึ่งก็ไม่รู้ว่าจะไม่ตรงกันทำไม ใครมีความรู้มาบอกบ้างก็ดีนะค่ะ) และ namespace ก็ไม่จำเป็นต้องตรงกับชื่อไฟล์ project ที่เป็น .csproj แปลว่ามีชื่ออยู่ 3 ส่วนด้วยกัน คือ

  1. ชื่อ folder ของ project
  2. ชื่อ project หรือ file .csproj
  3. ชื่อ namespace 


ซึ่งไม่จำเป็นจะต้องเป็นชื่อเดียวกัน แต่ถ้าใครอยากจะแก้ให้ชื่อทั้งสามเป็นชื่อเดียวกัน ก็มีวิธีที่ไม่ได้ยากเย็นอะไร แต่ต้องเข้าใจ ดังนี้

1. แก้ชื่อ folder

วิธีคือ จะต้องแก้ชื่อ folder ตรงๆ เหมือนที่เราแก้ชื่อ folder ทั่วๆ ไป แต่...หลังจากที่เราแก้แล้ว ใน solution จะหา project นั้น ไม่เจอ แล้วมันจะยอมให้เราแก้ไข property project folder ซึ่งโดยปกติ มันจะไม่ให้เราแก้ไข เราก็แค่เลือก folder ที่เราแก้ไขชื่อให้ถูกต้องก็เป็นอันเสร็จ



2. แก้ไขชื่อ project หรือ file .csproj

ทั้งนี้ ชื่อ project ที่แสดงใน solution มันเหมือนจะดึงมาจากชื่อไฟล์ .csproj นั่นเอง ซึ่งอันนี้แก้ได้ง่ายๆ โดย click ขวาที่ชื่อ project แล้วก็เลือก rename ใส่ชื่อที่ต้องการก็เป็นอันเสร็จ


3. แก้ชื่อ namespace

คลิ๊กขวาที่ชื่อ project แล้วเลือก Properties ซึ่งจะแสดงหน้าต่างอีกอันหนึ่ง (ซึ่งไม่เข้าใจเหมือนกันว่า ทำไมไม่เป็นอันเดียวกับ properties windows แล้วแก้ไข Default namespace กันได้ (ทั้งนี้ปกติเราก็จะแก้ไข Assembly name ไปด้วย โดยเข้าใจว่า assembly name คือชื่อของ file .dll ที่เราจะได้ และก็จะแก้ไขเข้าไปถึง Assembly Information ด้วย)


ก็เป็นอันเสร็จเรียบร้อย

ปกติคุ้นกับ Eclipse ที่ rename ปุ๊บ มันแก้ทุกอย่างให้หมดเลย ทั้งนี้ .Net มันคงต้องการให้ยืดหยุ่นที่จะสามารถตั้งชื่อทุกอย่างแยกจากกันได้อ่ะมั้ง (กำลังพยายามเข้าใจมัน)

จบจ้า