मुझे एंटीटी फ्रेमवर्क 4.3 के कोड फर्स्ट माइग्रेशन का उपयोग करते समय कई अनचाहे अपवाद मिल रहे हैं।एंटिटी फ्रेमवर्क कोड के लिए अपवाद पहले माइग्रेशन
डेटाबेस संदर्भ:
public class MyAppContext : DbContext
{
public DbSet<Branch> Branches { get; set; }
public MyAppContext()
{ }
}
इकाई:
public class Branch : IEntity<Guid>
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public bool Active { get; set; }
}
डेटाबेस प्रारंभकर्ता:
public class MyAppInitializer : CreateDatabaseIfNotExists<MyAppContext>
{
protected override void Seed(MyAppContext context)
{
context.Branches.Add(new Branch() { Id = branchId, Name = "Acme", Description = "Acme", Active = true });
context.SaveChanges();
}
}
मैं अपने DAL परियोजना और MVC परियोजना का उपयोग करने के इकाई की रूपरेखा 4.3 स्थापित:
स्थापित-पैकेज EntityFramework
मैं स्टार्टअप परियोजना के रूप में MVC परियोजना की स्थापना की और डेटाबेस संदर्भ और प्रारंभकर्ता साथ दाल परियोजना के लिए निम्न आदेश निष्पादित:
PM> सक्षम-माइग्रेशन -वर्बोस
NuGet प्रोजेक्ट 'Ckms.KeyManagement.Managers' का उपयोग करना। संदर्भ प्रकार की खोज करते समय त्रुटि (निर्दिष्ट करें - अपवाद विवरण देखने के लिए वर्बोज़)। System.Data.Entity.Migrations.Design.ToolingException: अनुरोधित प्रकारों में से एक या अधिक लोड करने में असमर्थ। अधिक जानकारी के लिए लोडरएक्सेप्शंस संपत्ति पुनर्प्राप्त करें। System.Data.Entity.Migrations.Design.ToolingFacade.GetContextTypes()
पर System.Data.Entity.Migrations.Design.ToolingFacade.Run (BaseRunner धावक) System.Data.Entity.Migrations.MigrationsCommands पर पर .FindContextToEnable() पर संदर्भ निर्दिष्ट करने के लिए जेनरेट किए गए कॉन्फ़िगरेशन क्लास को संपादित करें के लिए माइग्रेशन सक्षम करें। कोड पहले माइग्रेशन प्रोजेक्ट Ckms.KeyManagement.Managers के लिए सक्षम है।
डीबीएमग्रेशन कॉन्फ़िगरेशन बाल वर्ग डीएएल प्रोजेक्ट में जोड़ा जाता है। मैं मैन्युअल DbContext के प्रकार जोड़ सकते हैं और स्वचालित माइग्रेशन सक्षम करते हैं:
internal sealed class Configuration : DbMigrationsConfiguration<MyAppContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(MyAppContext context)
{ }
}
ये अपवाद ऐड-प्रवासन के लिए फेंक दिया जाता है और अद्यतन-डाटाबेस आदेश:
PM> एड-प्रवासन TestEFMigrationsColumn -verbose
NuGet प्रोजेक्ट 'Ckms.KeyManagement.Managers' का उपयोग करना। स्टार्टअप प्रोजेक्ट 'का उपयोग करना। सिस्टम। रिफ्लेक्शन। लक्ष्यइन्वेशन अपवाद: अपवाद के लक्ष्य से अपवाद फेंक दिया गया है। ---> सिस्टम। ऑर्ग्यूमेंट अपवाद: पैरामीटर गलत है। (HRESULT से अपवाद: 0x80070057 (E_INVALIDARG)) --- आंतरिक अपवाद स्टैक ट्रेस का अंत --- सिस्टम पर .RuntimeType.InvokeDispMethod (स्ट्रिंग नाम, बाइंडिंगफ्लैग invokeAttr, ऑब्जेक्ट लक्ष्य, ऑब्जेक्ट [] args, बूलियन [] byrefModifiers , इंट 32 संस्कृति, स्ट्रिंग [] नाम पैरामीटर) सिस्टम पर। रनटाइम टाइप।InvokeMember (स्ट्रिंग नाम, BindingFlags BindingFlags, बाइंडर बांधने की मशीन, वस्तु लक्ष्य, वस्तु [] providedArgs, ParameterModifier [] संशोधक, CultureInfo संस्कृति, String [] namedParams) System.Management.Automation.ComMethod.InvokeMethod (PSMethod विधि में, ऑब्जेक्ट [] तर्क) आमंत्रण के लक्ष्य से अपवाद को फेंक दिया गया है।
अद्यतन-डेटाबेस:
PM> अद्यतन-डाटाबेस -verbose
NuGet परियोजना 'Ckms.KeyManagement.Managers' का उपयोग करना। स्टार्टअप प्रोजेक्ट 'का उपयोग करना। सिस्टम। रिफ्लेक्शन। लक्ष्यइन्वेशन अपवाद: अपवाद के लक्ष्य से अपवाद फेंक दिया गया है। ---> सिस्टम। ऑर्ग्यूमेंट अपवाद: पैरामीटर गलत है। (HRESULT से अपवाद: 0x80070057 (E_INVALIDARG)) --- भीतरी अपवाद स्टैक ट्रेस की समाप्ति --- System.RuntimeType.InvokeDispMethod (स्ट्रिंग नाम पर, BindingFlags invokeAttr, वस्तु लक्ष्य, वस्तु [] args, बूलियन [] byrefModifiers , Int32 संस्कृति, String [] namedParameters) System.RuntimeType.InvokeMember (स्ट्रिंग नाम पर, BindingFlags BindingFlags, बाइंडर बांधने की मशीन, वस्तु लक्ष्य, वस्तु [] providedArgs, ParameterModifier [] संशोधक, CultureInfo संस्कृति, String [] namedParams) सिस्टम पर। प्रबंधन .Automation.ComMethod.InvokeMethod (PSMethod विधि, ऑब्जेक्ट [] तर्क) आमंत्रण के लक्ष्य से अपवाद को फेंक दिया गया है।
कोई विचार? त्रुटि संदेश वास्तव में सहायक नहीं हैं। मैंने Nuget कमांड को मौजूदा डेटाबेस के साथ और बिना कोशिश की है।
यह हल नहीं करता है मुझे डर है। यदि मैं कमांड पर StartUpProjectName तर्क जोड़ता हूं, तो निम्न त्रुटि उठाई जाती है: System.Reflection.ReflectionTypeLoadException: अनुरोधित प्रकारों में से एक या अधिक लोड करने में असमर्थ। –
क्या आपके पास डीएलएल कॉन्फ़िगरेशन में उचित सेटिंग्स हैं। मेरा मतलब है कॉन्फ़िगरेशन सेक्शन, एसक्यूएल कनेक्शन इत्यादि – Marcin
यही है! मुझे डीएएल डीएल के app.config में एसक्यूएल कनेक्शन जोड़ना पड़ा। ध्यान दें कि -StartupProjectName तर्क को डीएएल प्रोजेक्ट की बजाय एमवीसी/ui प्रोजेक्ट को इंगित करना होगा। आपकी सहायता के लिए धन्यवाद. –