NHibernate SchemaUpdate ปลอดภัยในรหัสการผลิตหรือไม่

เพื่อความเรียบง่าย. ฉันใช้ Automapping ของ Fluent NHibernate รวมกับ SchemaUpdate ของ NHibernate ในระหว่างรันไทม์ ในการรันแต่ละครั้ง Automapper จะสร้างการแมปสำหรับคลาสเอนทิตีทั้งหมด และ SchemaUpdate จะใช้สคีมากับฐานข้อมูลที่มีอยู่ ฉันรู้สึกประหลาดใจมากที่มันทำงานได้อย่างถูกต้องกับฐานข้อมูลที่ว่างเปล่าเช่นกัน จนถึงตอนนี้ มันทำงานได้ดีในสภาพแวดล้อมการพัฒนา และทำให้ฉันตอบสนองต่อจุดบกพร่องได้ค่อนข้างรวดเร็ว

คำถามของฉันคือว่าเชื่อถือได้เพียงพอที่จะฝากไว้ในรหัสการผลิตหรือไม่ แน่นอนว่าไม่จำเป็นต้องรันทุกครั้งที่โปรแกรมเริ่มทำงานในสภาพแวดล้อมการใช้งานจริง แต่จะมีประโยชน์สำหรับการอัปเดตผลิตภัณฑ์เพิ่มเติม (แม้ว่าฉันจะไม่ได้วางแผนที่จะทำการเปลี่ยนแปลงที่สำคัญใดๆ ในโดเมนหลังจากจัดส่งผลิตภัณฑ์แล้ว)

(บางทีคำถามที่แท้จริงของฉันควรจะปลอดภัยแค่ไหนหากใช้เครื่องมือทั้งสองนี้ร่วมกัน)

อัปเดต

แอปพลิเคชันมีสองเวอร์ชัน: เดสก์ท็อปแบบสแตนด์อโลนและไคลเอนต์/เซิร์ฟเวอร์ที่มีผู้ใช้หลายราย เนื่องจากลักษณะของโดเมนธุรกิจ (ซอฟต์แวร์ด้านภาษี) ฉันมีความหรูหราในการเริ่มต้นด้วยฐานข้อมูลที่สะอาดในแต่ละปี


person Kenneth Cochran    schedule 14.01.2010    source แหล่งที่มา
comment
ขอขอบคุณทั้ง CatZ และ Greg Beech ที่นำเสนอปัญหาด้านความปลอดภัย ฉันไม่ได้คำนึงถึงเรื่องนั้น ฉันใช้เวลาส่วนใหญ่กับเวอร์ชันเดสก์ท็อปแบบสแตนด์อโลนซึ่งความปลอดภัยไม่ได้เป็นปัญหามากนัก   -  person Kenneth Cochran    schedule 14.01.2010


คำตอบ (4)


เพื่อให้สิ่งนี้สามารถทำงานในรหัสการผลิตได้ บัญชีที่แอปพลิเคชันการผลิตใช้เพื่อเชื่อมต่อกับฐานข้อมูลของคุณจะต้องได้รับอนุญาตให้เปลี่ยนสคีมาฐานข้อมูล

เพียงอย่างเดียวควรขัดขวางคุณจากแนวทางนี้ โดยไม่คำนึงถึงคุณภาพ/ความน่าเชื่อถือของรหัส NHibernate

person Greg Beech    schedule 14.01.2010

ฉันจะไม่เสี่ยงมัน สิ่งที่ได้ผลดีคือการรันบนเซิร์ฟเวอร์ชั่วคราวที่ได้รับการกู้คืนจากการใช้งานจริง จากนั้นใช้เครื่องมือเปรียบเทียบฐานข้อมูล (เช่น Red Gate) เพื่อตรวจสอบการเปลี่ยนแปลงและสร้างสคริปต์

person Jamie Ide    schedule 26.01.2010

คุณอาจต้องการพิจารณาว่า SchemaUpdate จะทำการเปลี่ยนแปลงแบบเพิ่มเติมและไม่ทำลายเสมอ ส่งผลให้คอลัมน์เก่าและคอลัมน์ที่ไม่มีค่าซึ่งควรจะไม่เป็นค่าว่าง

กล่าวอีกนัยหนึ่ง ไม่ใช่เพื่อการใช้งานจริงอย่างแน่นอน

person SerialSeb    schedule 26.01.2010
comment
แล้วทางเลือกที่ดีคืออะไร? การอพยพบางประเภท? มีเฟรมเวิร์ก .net ดีๆ ใดบ้างที่คุณอยากแนะนำ ขอบคุณ - person andryuha; 28.01.2011

ขึ้นอยู่กับว่าข้อมูลมีความสำคัญแค่ไหน! ฉันสงสัยว่านั่นเป็นความคิดที่ดีสำหรับระบบธนาคาร ฉันไม่มีปัญหาใด ๆ กับการอัปเดตนอกเหนือจากสิ่งหนึ่งสิ่งใด บางครั้งก็เปลี่ยนชื่อไม่ถูกต้อง ยิ่งไปกว่านั้น ยังเป็นความเสี่ยงด้านความปลอดภัยในการเชื่อมต่อกับบัญชีที่สามารถปรับเปลี่ยนสคีมาเช่นนั้นได้ :)

person mhenrixon    schedule 14.01.2010