ฉันจะแก้ไขสตริงการเชื่อมต่อ Entity Framework ได้อย่างไร


115

ฉันเพิ่งแก้ไขไฟล์ app.config ของฉันเพื่อเปลี่ยนสตริงการเชื่อมต่อสำหรับโมเดลข้อมูล Entity Framework ( .edmxไฟล์) แต่ฉันอยากรู้: มีวิธีแก้ไขสตริงการเชื่อมต่อ EF โดยใช้ตัวออกแบบหรือไม่?

สตริงการเชื่อมต่อดั้งเดิมสร้างขึ้นโดยอัตโนมัติโดยตัวช่วยสร้างโมเดลข้อมูลเอนทิตี จากนั้นไม่สามารถเปลี่ยนแปลงสตริงการเชื่อมต่อได้ - ยังคงปิดใช้งานในหน้าต่างคุณสมบัติของตัวออกแบบ. edmx ฉันต้องการหลีกเลี่ยงการแก้ไข XML ด้วยมือหากทำได้ (ใน app.config) ดังนั้นฉันจึงสงสัยว่ามีวิธีกลับไปที่หน้าจอวิซาร์ดดั้งเดิมเพื่อทำการเปลี่ยนแปลงสตริงการเชื่อมต่อหรือไม่และให้เครื่องมือแก้ไขไฟล์ app.config สำหรับฉัน.

คำตอบ:


191

หากคุณลบสตริงการเชื่อมต่อออกจากapp.configไฟล์การเรียกใช้ตัวช่วยสร้างโมเดลข้อมูลเอนทิตีใหม่จะแนะนำให้คุณสร้างการเชื่อมต่อใหม่


17
ยอดเยี่ยม นี่คือคำตอบที่ฉันกำลังมองหา เพื่อความปลอดภัยฉันแสดงความคิดเห็นเกี่ยวกับสตริงที่มีอยู่ (แทนที่จะลบออก) บันทึกการเปลี่ยนแปลง app.config คลิกขวาที่ตัวออกแบบและเลือกอัปเดตโมเดลจากฐานข้อมูล จากนั้นตัวช่วยสร้างให้ฉันรวมข้อมูลที่ละเอียดอ่อน (uid & pwd) ในสตริงการเชื่อมต่อ ขอบคุณ!
DeveloperDan

5
หากคุณกำลังสร้างโมเดลก่อนให้คลิกขวาที่ตัวออกแบบแล้วคลิก 'สร้างฐานข้อมูลจากโมเดล' แทน
Carl Onager

2
สิ่งนี้ใช้ได้ผลสำหรับฉันเช่นกันยกเว้นว่าฉันต้องอัปเดตไฟล์ App.config จากนั้นรีสตาร์ท VS.NET 2012 ไม่พบว่าไฟล์ App.config มีการเปลี่ยนแปลง
Garry English

2
ฉันต้องโทรอย่างชัดเจนบันทึกในไฟล์ app.config เพื่อให้นักออกแบบรับรู้ว่าสตริงการเชื่อมต่อถูกลบไปแล้ว
Rossco

1
อีกทางเลือกหนึ่งในการรีสตาร์ท VS คือ 1. comment-out สตริงการเชื่อมต่อใน app.config 2. สร้างโปรเจ็กต์ใหม่ที่มี. edmx 3. คลิกขวาที่พื้นผิวการออกแบบ. edmx และอัปเดตโมเดลจากฐานข้อมูล ... ซึ่งควรนำมา ตัวช่วยสร้าง Connection String
RIanGillis

18

ไม่คุณไม่สามารถแก้ไขสตริงการเชื่อมต่อในตัวออกแบบ สตริงการเชื่อมต่อไม่ได้เป็นส่วนหนึ่งของไฟล์ EDMX แต่เป็นเพียงค่าอ้างอิงจากไฟล์คอนฟิกูเรชันและอาจเป็นเพราะมันอ่านอย่างเดียวในหน้าต่างคุณสมบัติ

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


+1 เพื่อเตือนความจำว่าหากพวกเขาใส่ไว้ในไฟล์กำหนดค่าหมายความว่าพวกเขาต้องการให้คุณสามารถเปลี่ยนแปลงได้ ฉันกังวลเป็นหลักเกี่ยวกับความจริงที่ว่าการเปลี่ยนแปลงของฉันอาจถูกลบล้างได้
tobiak777

คุณควรไปและเปลี่ยนสตริงการเชื่อมต่อในการกำหนดค่าแอปของโครงการ edmx เป็นของ ไม่ใช่การกำหนดค่าของแอปพลิเคชันระดับบนสุด (ซึ่งใช้เมื่อทำงาน) o_0
akava

9

โดยปกติคุณกำหนดสตริงการเชื่อมต่อของคุณใน Web.config หลังจากสร้าง edmx แล้วสตริงการเชื่อมต่อจะถูกเก็บไว้ใน App.Config หากคุณต้องการเปลี่ยนสตริงการเชื่อมต่อให้ไปที่ app.config และลบสตริงการเชื่อมต่อทั้งหมด ตอนนี้ไปที่ edmx คลิกขวาบนพื้นผิวนักออกแบบเลือกอัปเดตโมเดลจากฐานข้อมูลเลือกสตริงการเชื่อมต่อจากเมนูแบบเลื่อนลงคลิกถัดไปเพิ่มหรือรีเฟรช (เลือกสิ่งที่คุณต้องการ) และเสร็จสิ้น

ในหน้าต่างผลลัพธ์จะแสดงสิ่งนี้

ไฟล์โมเดลที่สร้างขึ้น: UpostDataModel.edmx การโหลดข้อมูลเมตาจากฐานข้อมูลใช้เวลา 00: 00: 00.4258157 การสร้างแบบจำลองใช้เวลา 00: 00: 01.5623765 เพิ่มสตริงการเชื่อมต่อไปยังไฟล์ App.Config


ฉันมีปัญหาที่คล้ายกัน แต่เมื่อฉันแสดงความคิดเห็นเกี่ยวกับสตริงการเชื่อมต่ออัปเดตโมเดลเลือกสตริงการเชื่อมต่อใหม่คลาส context.cs ของฉันภายในโมเดลจะถูกล้างออก ไม่แน่ใจว่าทำไมจึงทำเช่นนี้เว้นแต่ว่าจะสร้างคลาสบริบทไม่สำเร็จ?
bitshift

1
ไม่ควรทำอย่างนั้น อาจเป็นเพราะเครื่องมือสร้างเทมเพลต T4 ของคุณเสียหาย
DanKodi

ฉันยอมรับมัน "ไม่ควร" อย่างไรก็ตามฉันได้สูญเสียการนับจำนวนครั้งเมื่อทำการเปลี่ยนแปลงมากกว่าสองสามครั้งที่ไม่สำคัญกับสคีมาที่อยู่เบื้องหลังซึ่งในที่สุดฉันก็ต้องระเบิดโมเดลออกไปและสร้างใหม่ บางทีการใช้ EF7 และการลบไฟล์ edmx อาจช่วยได้ ไม่ว่าจะด้วยวิธีใดนั่นคือสิ่งที่ฉันทำในครั้งนี้เช่นกันเพียงแค่เน้นทุกอย่างในแบบจำลองกดลบและนำรายการเหล่านั้นกลับมา
bitshift

2

เปิด .edmx ยื่นการเปลี่ยนแปลงแก้ไขข้อความ Schema = " คีมาของคุณต้อง " และยังเปิดapp.config / web.configเปลี่ยนรหัสผู้ใช้และรหัสผ่านจากสายเชื่อมต่อ คุณทำเสร็จแล้ว


ใช่สิ่งนี้ทำได้
ggderas

1

ทำตามขั้นตอนต่อไป:

  1. เปิด app.config และแสดงความคิดเห็นเกี่ยวกับสตริงการเชื่อมต่อ (บันทึกไฟล์)
  2. เปิด edmx (ไปที่คุณสมบัติสตริงการเชื่อมต่อควรว่างเปล่า) ปิดไฟล์ edmx อีกครั้ง
  3. เปิด app.config และยกเลิกการใส่ความคิดเห็นสตริงการเชื่อมต่อ (บันทึกไฟล์)
  4. เปิด edmx ไปที่คุณสมบัติคุณจะเห็นสตริงการเชื่อมต่อที่อัปเดตแล้ว !!
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.