ไม่สามารถสร้างการโยกย้ายอย่างชัดเจนในกรอบงานเอนทิตี


96

ฉันกำลังเพิ่มการย้ายข้อมูลใหม่ แต่ข้อความนี้แสดง:

ไม่สามารถสร้างการย้ายข้อมูลอย่างชัดเจนเนื่องจากการย้ายข้อมูลอย่างชัดเจนต่อไปนี้กำลังรอดำเนินการ: [201203170856167_left] ใช้การย้ายข้อมูลที่ชัดเจนที่รอดำเนินการก่อนที่จะพยายามสร้างการย้ายข้อมูลใหม่อย่างชัดเจน

มีใครช่วยฉันได้บ้าง?


11
เหตุการณ์นี้เกิดขึ้นกับฉันเมื่อฉันบังเอิญเปลี่ยนโครงการเริ่มต้นไปเป็นโครงการอื่น คุณ (หรือคนอื่น ๆ ที่อ่านสิ่งนี้) อาจต้องการตรวจสอบอย่างรวดเร็วก่อนที่จะลองแก้ไขปัญหาเชิงลึกเพิ่มเติม (โดยเฉพาะอย่างยิ่งที่คุณต้องเริ่มลบการย้ายข้อมูลเป็นต้น)
NicholasFolk

มีคลาสการโอนย้ายในไดเร็กทอรี Migrations ซึ่งไม่ได้รับการอัพเดตใน _MigrationHistory ของฐานข้อมูล การลบคลาสนั้นให้มีสถานะเดียวกันทั้งในไดเร็กทอรีการโยกย้ายและฐานข้อมูลช่วยแก้ปัญหาของฉันได้
Aryan Firouzian

1
สิ่งนี้เกิดขึ้นกับฉันแบบสุ่ม เมื่อมันเกิดขึ้นแสดงว่าต้องใช้การย้ายข้อมูลทั้งหมดของฉัน ฉันต้องรีสตาร์ท Visual Studio เพื่อให้ใช้งานได้เพราะฉันได้ตั้งค่าทุกอย่างไว้อย่างถูกต้องแล้ว
Larry Flewwelling

คำตอบ:


82

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


12
สิ่งใดที่คุณต้องการสร้างการย้ายข้อมูลครั้งแรก สิ่งนี้บล็อกคุณจากการทำเช่นนั้นหรือไม่
Rebecca

ไม่ได้ผลสำหรับฉัน Update-Database เพิ่งให้ข้อผิดพลาดอีกครั้ง ฉันต้องลบไฟล์ที่รอดำเนินการก่อน
Vahx

1
คำตอบของโทมัสเป็นคำตอบที่มีประโยชน์สำหรับกรณีที่คล้ายกันของฉัน
Tarek Shawadfy

2
อาจจำเป็นต้องประกาศโครงการเริ่มต้น-StartupProject ContentHub.Database
osanger

2
Update-Databaseให้> ไม่สามารถอัปเดตฐานข้อมูลให้ตรงกับรุ่นปัจจุบันเนื่องจากมีการเปลี่ยนแปลงที่รอดำเนินการ
ASpirin

54

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


1
ฉันจะเพิ่มด้วยว่านี่จะเป็นกรณีนี้เมื่อคุณย้าย App.config ไปยังโปรเจ็กต์อื่นหรือถ้ามันหายไปในโปรเจ็กต์ของคุณหรือถ้ามันอยู่ในโปรเจ็กต์ของคุณ แต่ได้รับการกำหนดค่าไม่ถูกต้อง
Code Maverick

ฉันได้รับข้อผิดพลาดเดียวกันนี้หลังจากเปลี่ยน IP ของฉัน (เกิดขึ้นทั้งหลังจากเปลี่ยนตำแหน่งและหลังจากเปลี่ยน dyn dns) สิ่งนี้ทำให้ไฟร์วอลล์ในฐานข้อมูล Azure ที่เราใช้เพื่อเพิกถอนการเข้าสู่ระบบ การโยกย้าย EF อย่างไม่เป็นประโยชน์ให้ข้อผิดพลาดข้างต้นแทนที่จะเป็น "ไม่สามารถเข้าสู่ระบบ" ...
วิกเตอร์

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

การเพิ่มไปที่ @GageTrader: ฉันมีโปรเจ็กต์เริ่มต้นหลายโปรเจ็กต์ที่ไม่มีการกำหนดค่าและโปรเจ็กต์เว็บที่มี EF-config โปรเจ็กต์ (Repository) ที่มีการโอนย้ายมีการกำหนดค่า EF เดียวกันใน app.config เหมือนกับโปรเจ็กต์เว็บ แต่ถึงแม้ว่าฉันจะเลือกโปรเจ็กต์ที่เก็บเป็นโปรเจ็กต์เริ่มต้นมันก็ไม่ทำงาน แต่เมื่อฉันตั้งค่าเว็บโปรเจ็กต์ให้เริ่มต้น
JimiSweden

ฉันต้องระบุพารามิเตอร์ -ConnectionString อย่างชัดเจนซึ่งเป็นเคล็ดลับสำหรับฉัน
Brian Colavito

34

คุณต้องเรียกใช้ "update-database" จากคอนโซลตัวจัดการแพ็กเกจเพื่อพุชการเปลี่ยนแปลงของคุณไปยังฐานข้อมูลหรือคุณสามารถลบไฟล์การย้ายข้อมูลที่รอดำเนินการ ([201203170856167_left]) จากโฟลเดอร์การย้ายข้อมูลของคุณจากนั้นเรียกใช้ "add-migration" อีกครั้งเพื่อ สร้างการย้ายข้อมูลใหม่ล่าสุดโดยอิงจากการแก้ไขของคุณ


1
ฉันลบไฟล์การย้ายข้อมูลและเรียกใช้การย้ายข้อมูลเพิ่ม แต่ยังคงให้ข้อผิดพลาดเหมือนเดิม
nu everest

2
ขอบคุณเคล็ดลับเกี่ยวกับการลบไฟล์การย้ายข้อมูลที่รอดำเนินการคือการช่วยชีวิต
Manish

32

ข้อผิดพลาดนี้อาจหมายความว่าระบบไม่รู้จักการย้ายข้อมูลอีกต่อไป สิ่งนี้เกิดขึ้นกับฉันหลังจากเปลี่ยนค่าของ ContextKey ใน Migrations.Configuration วิธีแก้ปัญหาคือเพียงแค่อัปเดต ContextKey ในตารางฐานข้อมูล "__MigrationHistory" (หรือคืนค่าในคลาส Configuration ฉันเดา) ContextKey และ Namespace ในแอปพลิเคชันของคุณควรตรงกัน


1
นั่นเป็นคำตอบที่ถูกต้องสำหรับกรณีของฉัน เนื่องจากฉันใช้หนึ่งในโครงการเก่าของฉันสำหรับโครงการใหม่ที่คล้ายกันฉันจึงไม่สามารถทำการเปลี่ยนแปลงฐานข้อมูลในการย้ายข้อมูลเก่าได้ ตามที่ Thomas แนะนำเนมสเปซนั้นแตกต่างกันในการย้ายข้อมูลจาก Contextkey ในตาราง _MigrationsHistory ซึ่งทำให้ไม่รู้จักการย้ายข้อมูลแบบเก่า
Tarek Shawadfy

1
สิ่งนี้ช่วยฉันได้เพราะฉันทำให้เกิดปัญหาโดยการเปลี่ยนชื่อโซลูชัน ในกระบวนการนี้ฉันได้เปลี่ยนชื่อ ContextKey ดังนั้นจึงไม่ตรงกับรายการ _MigrationHistory อีกต่อไป
Joel

ยังใช้งานได้สำหรับฉันตั้งค่าคีย์บริบทที่ชัดเจนในการกำหนดค่าเปลี่ยนมันใน __MigrationHistory และฐานข้อมูลการอัปเดตตัดสินใจว่าทุกอย่างยอดเยี่ยม ขอบคุณ!
James White

2
ไร้สาระ แต่ถูก หากคุณอัปเดตชื่อโปรเจ็กต์หรือถ้าคุณแยกโปรเจ็กต์ (เคสของฉัน) ออกเป็นไม่กี่โปรเจ็กต์และคุณกำลังพยายามเพิ่มการโอนย้ายใหม่จากโปรเจ็กต์ใหม่ไปยังฐานข้อมูลเดียวกันคุณต้องใช้ ContextKey ที่ถูกต้องคุณสามารถตั้งค่าในคอนฟิกูเรชันคอนฟิกูเรชัน ( คุณต้องใช้คีย์บริบทที่คุณมีในตาราง __MigrationHistory ในฐานข้อมูลเป้าหมาย)
BotanMan

เหมือนกันที่นี่ฉันเปลี่ยนชื่อพื้นที่ชื่อเริ่มต้นของฉันและแทนที่ตลอดการแก้ปัญหาของฉันซึ่งทำให้เกิดปัญหานี้
WtFudgE

20

1. สิทธิ์การเชื่อมต่อสตริง / การเชื่อมต่อ

ตรวจสอบสตริงการเชื่อมต่ออีกครั้ง

ตรวจสอบให้แน่ใจว่าผู้ใช้ที่คุณเชื่อมต่อด้วยยังคงมีสิทธิ์อ่าน[__MigrationHistory]และมีสิทธิ์แก้ไขสคีมา

นอกจากนี้คุณยังสามารถลองเปลี่ยนสตริงการเชื่อมต่อในแฟ้ม App หรือเว็บการตั้งค่าการใช้งานการรักษาความปลอดภัยแบบบูรณาการ (Windows Auth) เพื่อเรียกใช้คำสั่งเพิ่มการโยกย้ายเป็นตัวเอง

ตัวอย่างเช่น:

connectionString="data source=server;initial catalog=db;persist security info=True;Integrated Security=SSPI;" 

สตริงการเชื่อมต่อนี้จะไปอยู่ในไฟล์ App.config ของโปรเจ็กต์ที่ DbContext ตั้งอยู่

2. โครงการเริ่มต้น

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

ป้อนคำอธิบายภาพที่นี่


ฮ่า ๆ . ฉันหวังว่านี่จะได้รับการโหวตมากขึ้น สิ่งนี้เกิดขึ้นกับฉันมากมายและการIntegrated Securityแก้ไขก็ใช้ได้ผลดี!
เจส

1
ฉันประสบปัญหาเดียวกันไม่มีคำสั่งย้ายข้อมูลใดทำงานได้ ปรากฎว่าการไม่ตั้งค่าโครงการเริ่มต้นเป็นตัวการ การตั้งค่าที่แก้ไขปัญหาของฉัน
Vishal

การเปลี่ยนโครงการเริ่มต้นใช้ได้ผลสำหรับฉัน! ฉันแน่ใจว่ามันจะไม่ได้ผล แต่ฉันก็พยายามต่อไปเพราะทุกอย่างล้มเหลว คำตอบที่ดี
Sylvain Rodrigue

"ตั้งเป็นสตาร์ทอัพ" - ไม่มีทางเดา! ขอบคุณ!!
Jasel

1
ใช่ฉันตั้งใจเปลี่ยนโปรเจ็กต์เริ่มต้นแล้วและลืมเปลี่ยนกลับ และที่น่าตลกก็คือการย้ายข้อมูลก่อนหน้านี้เกิดขึ้นกับโครงการเริ่มต้นที่เหมาะสมดังนั้นทุกอย่างจึงทำงานได้ดี แต่นี่เป็นตรรกะตอนนี้ - b / c EF รับสตริงการเชื่อมต่อจากโปรเจ็กต์ดังนั้นจึง "ไม่รู้" ว่าการโอนย้ายได้ใช้กับ DB แล้วจริงๆ ...
kosist

8

มีปัญหาเดียวกันและสามารถแก้ไขได้ด้วยคำแนะนำบางประการจากคำตอบด้านบน:

  • ในคอนโซลตัวจัดการแพ็กเกจให้ตรวจสอบโปรเจ็กต์เริ่มต้น (ชี้ไปที่โปรเจ็กต์ที่มีคอนฟิกูเรชันการโอนย้าย
  • ตรวจสอบให้แน่ใจว่า startup-proj มี web.config พร้อมด้วย connectionstring ที่ถูกต้อง (หรือ
  • ตรวจสอบให้แน่ใจว่าโปรเจ็กต์ที่มีการโอนย้ายมี app.config / web.config พร้อมด้วย connectionstring ที่ถูกต้อง
  • ตรวจสอบสิทธิ์ใน DB (สำหรับผู้ใช้ที่กำหนดค่าใน connectionstring ของคุณ)

ใช้ "update-database -verbose" ในคอนโซลตัวจัดการแพ็กเกจเพื่อรับข้อมูลเฉพาะเพิ่มเติมที่การย้ายข้อมูลพยายามเชื่อมต่อ (ช่วยในกรณีของฉันเพื่อค้นหาว่าการเริ่มต้นระบบของฉันตั้งค่าไม่ถูกต้อง ... )


2
เรียกใช้ "update-database -verbose" และสังเกตว่าสตริงการเชื่อมต่อของฉันเสียฮ่า ๆ ดังนั้นคำสั่ง add-migration จึงให้ข้อความผิด
Wachburn

4
"ตรวจสอบให้แน่ใจว่า startup-proj {... }" แก้ไขปัญหาของฉันได้ ขอบคุณ @flex
Andy Schmitt

7

หากคุณยังไม่ได้ใช้Update-Databaseคุณสามารถลบได้ หากคุณเรียกใช้การอัปเดตให้ย้อนกลับโดยใช้ไฟล์Update-Database -TargetMigration "NameOfPreviousMigration"จากนั้นลบออก

อ้างอิง: http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/

ฉันคัดลอกข้อความนี้โดยตรงจากที่นี่: ฉันจะยกเลิกคำสั่ง Add-Migration ล่าสุดได้อย่างไร


7

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

add-migration Delta_Defect_0973 -ConfigurationTypeName your.namespace.ContextClassName -StartUpProject DeltaProject -ConnectionStringName DeltaSQL

ที่ไหน:

Delta_Defect_0973คือชื่อการย้ายข้อมูลของคุณ

your.namespace.ContextClassNameคือชื่อของคลาส Configuration ของคุณในโฟลเดอร์การโอนย้ายของคุณโดยนำหน้าด้วยช่องว่างชื่อเต็ม

DeltaProjectคือชื่อโปรเจ็กต์หลักของคุณพร้อมไฟล์ web.config หรือ app.config

DeltaSQLคือชื่อของสตริงการเชื่อมต่อของคุณที่กำหนดไว้ในไฟล์ web.config หรือ app.config


ขอบคุณ. สิ่งนี้ช่วยฉันได้จริงๆ
Jess

นอกจากนี้หากคุณใช้การฉีดขึ้นต่อกันในโซลูชันของคุณคุณอาจต้องเลือกโครงการเริ่มต้นอื่นในคอนโซลตัวจัดการแพ็คเกจ หาก EF ไม่พบการย้ายข้อมูลของคุณให้ลองเลือกโปรเจ็กต์ที่มีการย้ายข้อมูลเป็นโปรเจ็กต์เริ่มต้น
Yves Rochon

5

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

  1. ดำเนินการโอนย้ายที่รอดำเนินการโดยใช้คำสั่ง Update-Database
  2. ลบการย้ายข้อมูลที่รอดำเนินการเหล่านั้น วิธีที่ปลอดภัยที่สุดคือเปิดโฟลเดอร์ Migrations คลิกขวาที่ [201203170856167_left]> ไม่รวมจากโปรเจ็กต์

หลังจากนี้คุณสามารถเริ่ม "Add-Migration ... " ได้อีกครั้ง

หวังว่าจะช่วยได้


4

แค่สองเซ็นต์ของฉัน:

สถานการณ์ของฉัน:

  1. ฉันกู้คืนฐานข้อมูลในเครื่องของฉันกลับสู่สถานะที่ใช้งานได้
  2. มีการย้ายข้อมูลไปใช้แล้ว
  3. เมื่อใดก็ตามที่ฉันพยายามเพิ่มการย้ายข้อมูลใหม่ฉันได้รับข้อผิดพลาดเกี่ยวกับการรอการย้ายข้อมูลดังที่กล่าวถึง OP

วิธีการแก้:

เพื่อหลีกเลี่ยงสิ่งนี้ฉันเพิ่งให้พารามิเตอร์ที่ชัดเจนเพิ่มเติม:

Add-Migration -ConnectionString "Server=localhost\SQLEXPRESS;Database=YourDataBase;Trusted_Connection=True;" -ConnectionProviderName "System.Data.SqlClient" -verbose

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


1
สิ่งนี้ใช้ได้ผลสำหรับฉันฉันเพิ่งเพิ่มชื่อของการย้ายข้อมูลที่ส่วนท้ายของคำสั่งที่แสดงด้านบน
sfors กล่าวว่าคืนสถานะ Monica ใน

1
=) - ดีใจที่ช่วยได้
IbrarMumtaz

1
-ConnectionStringNameเป็นอีกทางเลือกหนึ่งและจะดึงสตริงการเชื่อมต่อจาก config ของคุณตามชื่อ
Simon_Weaver

1
สิ่งนี้ช่วยฉันได้เพราะฉันไม่ได้จัดเก็บสตริงการเชื่อมต่อในไฟล์ config
Sasinosoft

3

มีความคลุมเครือและข้อผิดพลาดดังนั้น วิธีที่ดีที่สุดคือการแยกไฟล์การโอนย้ายปัจจุบันและสร้างไฟล์การโอนย้ายใหม่ ( เพิ่มการโอนย้าย ) จากนั้นคัดลอกเนื้อหาของการย้ายข้อมูลใหม่ไปยังไฟล์ที่ยกเว้นและรวมไว้อีกครั้งและรันคำสั่งupdate-database


ฉันเพิ่งวิ่ง update-databaseคำสั่งจากนั้นลองadd-migrationคำสั่งของฉันอีกครั้งและมันใช้งานได้
Smitty-Werben-Jager-Manjenson

3

ฉันแก้ไขปัญหาเดียวกันเช่นนี้:

  • ลบไฟล์การย้ายข้อมูลเก่า
  • ปรับปรุงฐานข้อมูล - บังคับ
  • Add-Migration AddedEntity
  • ปรับปรุงฐานข้อมูล

1

ฉันมีปัญหาเดียวกันและสามารถแก้ไขได้เฉพาะการเรียกใช้ Add-Migration 'MigrationName' -Force

ด้วย - บังคับเป็นส่วนสำคัญ


1

ฐานข้อมูลในเครื่องของฉันไม่มีข้อมูล__MigrationHistoryหรือมีอยู่ ฉันสร้างตารางด้วยตนเองจากนั้นย้ายข้อมูลในตารางนั้นจาก PROD ไปยังฐานข้อมูลในเครื่องของฉัน สิ่งนี้ทำให้ VS คิดว่ามีการใช้การย้ายข้อมูล (ซึ่งเคยเป็นมา)


ฉันมีปัญหาเดียวกันฉันรวม Live DB เข้ากับการใช้งานจริง แต่ประวัติการย้ายข้อมูลจึงหายไป
matthy

1

เคล็ดลับ:คุณควรใช้-Scriptสวิตช์สำหรับคำสั่งการย้ายข้อมูลหากคุณไม่แน่ใจ นอกจากนี้ยังช่วยให้เข้าใจสิ่งที่Update-Databaseทำได้จริง

ฉันเรียกใช้สิ่งต่อไปนี้เพื่ออัปเดตฐานข้อมูลจากนั้นฉันได้รับสคริปต์ที่สามารถใช้ด้วยตนเองได้ (หรือเรียกใช้อีกครั้งโดยไม่มีแท็ก -Script)

สำหรับUpdate-Databaseฉันจะเรียกใช้สิ่งต่อไปนี้:

Update-Database -Script -ConfigurationTypeName Configuration_ASPNETIdentity -ConnectionStringName SQL_AzureLive

SQL_AzureLiveสตริงการเชื่อมต่อที่ตั้งชื่อใน config ของฉันอยู่ที่ไหน

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


1

สำหรับฉันฉันลบไฟล์การย้ายข้อมูล (ในกรณีของคุณ "201203170856167_left") ออกจากMigrationsโฟลเดอร์จากนั้นเรียกใช้คำสั่งด้านล่างในคอนโซล Package Manager

Add-Migration <Parameter>
Update-Database

0

สถานการณ์

  • ฉันทำงานในสาขาที่ฉันสร้างการย้ายฐานข้อมูลใหม่
  • ฉันพร้อมที่จะอัปเดตจากมาสเตอร์ แต่มาสเตอร์ก็มีการย้ายฐานข้อมูลล่าสุดเช่นกัน
  • ฉันลบการย้ายฐานข้อมูลสาขาของฉันเพื่อป้องกันความขัดแย้ง
  • ฉัน "อัปเดตจากต้นแบบ"

ปัญหา

หลังจากอัปเดตจากต้นแบบฉันเรียกใช้ "Add-Migration my_migration_name" แต่ได้รับข้อผิดพลาดต่อไปนี้:

ไม่สามารถสร้างการโอนย้ายแบบชัดแจ้งเนื่องจากการย้ายข้อมูลอย่างชัดเจนต่อไปนี้กำลังรอดำเนินการ: [201607181944091_AddExternalEmailActivity] ใช้การย้ายข้อมูลที่ชัดเจนที่รอดำเนินการก่อนที่จะพยายามสร้างการย้ายข้อมูลอย่างชัดเจนใหม่

ดังนั้นฉันจึงเรียกใช้ "Update-Database" และได้รับข้อผิดพลาดต่อไปนี้:

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

วิธีการแก้

เมื่อถึงจุดนี้การเรียกใช้ "Add-Migration my_migration_name" อีกครั้งเพื่อแก้ปัญหาของฉัน ทฤษฎีของฉันคือการเรียกใช้ "Update-Database" ทำให้ทุกอย่างอยู่ในสถานะที่จำเป็นเพื่อให้ "Add-Migration" ทำงานได้


0

ฉันเจอปัญหานี้ด้วย เกิดขึ้นเมื่อฉันสร้างฐานข้อมูลใหม่และฉันรอการเปลี่ยนแปลงสำหรับการย้ายฐานข้อมูลรหัสแรกของฉันจากนั้นฉันจึงพยายามเรียกใช้คำสั่ง วิธีแก้ไข: เรียกใช้คำสั่ง "Add-Migration -MigrationName" เพื่อสร้างการโอนย้ายใหม่สำหรับ DB ใหม่ จากนั้นเรียกใช้คำสั่ง "Update-Database"


0

ฉันมีปัญหานี้เช่นกันสำหรับฐานข้อมูลที่ฉันรู้ว่าเป็นรุ่นล่าสุดเมื่อเรียกใช้ Add-Migration แก้ไขได้โดยเพียงแค่เรียกใช้คำสั่ง Add-Migration เป็นครั้งที่สอง สงสัยปัญหาการเชื่อมต่อตามที่ Robin Dorbell แนะนำไว้ข้างต้น


ในสถานการณ์ของฉันชื่อฐานข้อมูลคือ case sensitve เมื่อรันคำสั่ง ทันทีที่ทำการเชื่อมต่อ
สตริง

0

นั่นเกิดขึ้นเมื่อฉันเปลี่ยนชื่อคลาสของการโอนย้ายแบบเก่าที่มีอยู่แล้วใน db อย่างกะทันหัน ฉันตรวจสอบประวัติ VCS ตรวจสอบและเปลี่ยนชื่อกลับ ทั้งหมดทำงานในภายหลัง


0

ฉันทำอีกวิธีหนึ่ง ฉันทิ้งฐานข้อมูลทั้งหมดและเรียกใช้ "update-database" อีกครั้งในเทียบกับ


สิ่งนี้ไม่ได้ให้การแก้ไขที่เป็นไปได้ การโยกย้ายที่ถูกต้องยังคงรักษาโครงสร้างที่มีอยู่
Ferdipux

0

ฉันมีปัญหาที่ง่ายกว่า VS รายงานข้อผิดพลาดนี้อย่างไม่ถูกต้องเมื่อฉันมีการเชื่อมต่อ VPN ไปยังไซต์ของไคลเอนต์ที่เชื่อมต่อบนเวิร์กสเตชันของฉัน ปัญหาคือการรักษาความปลอดภัย DBMS ถูกตั้งค่าให้ยอมรับคำขอจาก IP ภายในเครื่องจริงของฉันเท่านั้น เพียงแค่ปิด VPN ก็สามารถแก้ปัญหาได้


0

ในกรณีของฉันฉันลืมเพิ่มที่อยู่ IP ของฉันในกฎไฟร์วอลล์ใน Azure โดยพื้นฐานแล้วเนื่องจากฉันไม่สามารถเชื่อมต่อกับฐานข้อมูลได้ฉันจึงได้รับข้อผิดพลาดนี้ โดยเฉพาะสำหรับกรณีของฉันฉันเพิ่มที่อยู่ IP ของฉันในกฎไฟร์วอลล์ฐานข้อมูลใน Azure และทุกอย่างก็ทำงานได้ดี นอกเหนือจากนี้อาจเป็นปัญหาของการเชื่อมต่อพร็อกซี / อินเทอร์เน็ต / รหัสผ่านชื่อผู้ใช้ DB / สตริงการเชื่อมต่อ DB เป็นต้นหรือเห็นได้ชัดว่าคุณอาจมีการโอนย้ายที่รอดำเนินการซึ่งคุณต้องเรียกใช้คำสั่ง Update-Database


0

ที่ผ่านมาฉันมักจะแก้ไขปัญหานี้โดยการลบการย้ายข้อมูลที่รอดำเนินการหรือหากมีเพียง 1 รายการที่เหลืออยู่และส่วนใหญ่เป็นที่ต้องการโดยใช้-fเพื่อสร้างใหม่

เมื่อเร็ว ๆ นี้สิ่งนี้หยุดทำงานสำหรับฉันแล้ว

เมื่อสิ่งนี้เกิดขึ้นในครั้งแรกฉันรีสตาร์ท Visual Studio จากนั้นให้ฉันดำเนินการต่อ

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


0

นี่ไม่ใช่คำตอบสำหรับหลาย ๆ คน แต่ EF จะจับข้อผิดพลาดนี้เมื่อไม่สามารถเชื่อมต่อกับ DB ได้ หากคุณทำงานจากที่บ้านเหมือนฉันตรวจสอบให้แน่ใจว่าคุณยังเชื่อมต่อกับ VPN ของคุณอยู่!


0

โพสต์เก่า แต่อาจช่วยใครบางคนได้ สำหรับฉันมันเกิดขึ้นเพราะฉันเปลี่ยนชื่อAssembly nameและDefault namespaceของโครงการ ดังนั้นฉันจึงต้องอัปเดตContextKeyใน_MigrationHisotryตารางเป็นค่าใหม่ของAssembly nameor Default namespace. บอกตามตรงว่าไม่รู้จะใช้อันไหนดีเพราะสำหรับฉันทั้งคู่เหมือนกัน!


-1

ฉันประสบปัญหาเดียวกันหลังจากเปลี่ยนจากการย้ายข้อมูลไปยังอีกที่หนึ่ง

ในกรณีของฉันฉัน "กำหนดเป้าหมายการย้ายข้อมูล" จาก "migration06" เป็น "migration04"

ฉันต้องการลบ "migration0" 6 จากนั้นฉันก็สามารถบังคับให้สร้าง "migration05" ได้ โดยพื้นฐานแล้วหมายความว่าคุณต้องทำการย้ายข้อมูลครั้งต่อไปหลังจากที่กำหนดเป้าหมายไว้


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.