11

मेरे पास SQL ​​सर्वर सीई 4.0 का उपयोग कर एक एएसपी.नेट एमवीसी 3 बीटा वेबसाइट है।ईएफ 4 मेरा डेटाबेस फिर से बनाने का प्रयास क्यों कर रहा है भले ही मॉडल नहीं बदला गया हो?

 
File already exists. Try using a different database name. 
[ File name = D:\Sourcecode\NerdDinner\NerdDinner\App_Data\NerdDinners.sdf ] 

Line 17:   public ActionResult Index() 
Line 18:   { 
Line 19:    var dinners = from d in nerdDinners.Dinners 
Line 20:       where d.EventDate > DateTime.Now 
Line 21:       select d; 

[SqlCeException (0x80004005): File already exists. Try using a different database name. [ File name = D:\Sourcecode\NerdDinner\NerdDinner\App_Data\NerdDinners.sdf ]] 
    System.Data.SqlServerCe.SqlCeEngine.ProcessResults(IntPtr pError, Int32 hr) +92 
    System.Data.SqlServerCe.SqlCeEngine.CreateDatabase() +1584 
    System.Data.SqlServerCe.SqlCeProviderServices.DbCreateDatabase(DbConnection connection, Nullable`1 timeOut, StoreItemCollection storeItemCollection) +287 
    System.Data.Objects.ObjectContext.CreateDatabase() +84 
    System.Data.Entity.Internal.DatabaseOperations.Create(ObjectContext objectContext) +35 
    System.Data.Entity.Infrastructure.Database.Create() +70 
    System.Data.Entity.Infrastructure.CreateDatabaseOnlyIfNotExists`1.InitializeDatabase(TContext context) +360 
    System.Data.Entity.Infrastructure.Database.Initialize() +272 
    System.Data.Entity.Internal.InternalContext.Initialize() +90 
    System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +34 
    System.Data.Entity.Internal.Linq.EfInternalQuery`1.Initialize() +140 
    System.Data.Entity.Internal.Linq.EfInternalQuery`1.get_Provider() +29 
    System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() +34 
    System.Linq.Queryable.Where(IQueryable`1 source, Expression`1 predicate) +63 
    NerdDinner.Controllers.HomeController.Index() in D:\Sourcecode\NerdDinner\NerdDinner\Controllers\HomeController.cs:19 

मैं समझ नहीं क्यों यह एक मौजूदा .dbf फ़ाइल और अन्य समय इसके साथ कभी कभी काम करता है: दोनों ScottGu's NerdDinner example और अपने खुद के कोड के साथ, मैं कभी कभी निम्नलिखित अपवाद जैसे ही मैंने डेटाबेस तक पहुँचने का प्रयास मिल जाएगा शिकायत। मैंने

Database.SetInitializer(new CreateDatabaseOnlyIfNotExists<...>()); 

के साथ डिफ़ॉल्ट व्यवहार को स्पष्ट रूप से सेट करने का भी प्रयास किया है? क्या किसी और ने इसका अनुभव किया है?

  • कैसिनी को पुनरारंभ करना कोई फर्क नहीं पड़ता है।
  • इस त्रुटि को प्राप्त करने के बाद आईई में रीफ्रेश मारना ठीक उसी पृष्ठ को ठीक से लोड करेगा
+0

अपने स्टैकट्रेस से:: 'CreateDatabaseOnlyIfNotExists' यहाँ टीम ब्लॉग से घोषणा है। ईएफ सही बात करने के लिए * कोशिश कर रहा है *। लेकिन किसी भी तरह यह जांचने के लिए कि डीबी मौजूद है या नहीं। उसमें देखो। –

+0

यहां अजीब चीज है। .NET फ्रेमवर्क प्रतीकों/कोड को लोड करना और कोड को डीबग करना वास्तव में समस्या को होने से रोकता है। हर बार। मुझे यह नहीं मिला। – Jedidja

उत्तर

1

SQL सर्वर सीई सीटीपी 1 स्थापित और उपयोग करें, जो अभी भी Microsoft sites पर डाउनलोड करने योग्य है। इसने मेरी समस्या को हल किया।

3

ऐसा लगता है कि यह हाल ही में एक खोज की गई बग है। MSDN Forum

वैकल्पिक हल को पुन: स्थापित करने के लिए SQL सर्वर सीई 4.0 सीटीपी है 1 download

8

मैं आज सामना कर रहा था और एक समाधान है जो एक पुराने स्थापित करने को शामिल नहीं करता पाया है क्षमा करें इस तरह के एक पुराने सवाल को फिर से शुरू करने के लिए है, लेकिन सीटीपी का संस्करण।

ब्लॉगपोस्ट के लिए सही URL से (ब्लॉग पोस्ट के माध्यम से के बारे में आधे रास्ते) http://www.hanselman.com/blog/PDC10BuildingABlogWithMicrosoftUnnamedPackageOfWebLove.aspx

है * इस के लिए अपने AppStart_SQLCEEntityFramework.cs फ़ाइल और DefaultConnectionFactory लाइन में जाओ: *

Database.DefaultConnectionFactory = new SqlCeConnectionFactory( 
    "System.Data.SqlServerCe.4.0", 
    HostingEnvironment.MapPath("~/App_Data/"),""); 

मेरा विशेष डेटाबेस App_Data फ़ोल्डर में रखा गया है लेकिन मुझे लगता है कि यदि आपका नहीं है तो आप सूट के पथ को बदलने में सक्षम होना चाहिए और यह काम करेगा।

आशा है कि इससे मदद मिलती है!

+0

शानदार, जिसने मुझे वैसे भी मदद की। –

+0

बस आज यह नई रिलीज 4.1 ईएफ के साथ किया ... :-) – klabranche

1

मैं जारी किया MVC3 और SQL सर्वर सीई 4.0 NuGet के साथ डाउनलोड के साथ एक ही समस्या आज था और यह लाइन uncommenting द्वारा हल किया गया:

DbDatabase.SetInitializer(new CreateCeDatabaseIfNotExists<MyContext>()); 

और संदर्भ वर्ग में DBContext से इनहेरिट किया गया था के साथ MyContext की जगह मॉडल फ़ोल्डर।

संबंधित मुद्दे