SQL Server CE 4.0 を使用する ASP.NET MVC 3 Beta Web サイトを持っています。ScottGu の NerdDinner の例と私自身のコードの両方で、データベースにアクセスしようとするとすぐに次の例外が発生することがあります。
ファイルが既に存在します。別のデータベース名を使用してみてください。
[ ファイル名 = D:\Sourcecode\NerdDinner\NerdDinner\App_Data\NerdDinners.sdf ]
17行目: public ActionResult Index()
18行目: {
19 行目: var dinners = nerdDinners.Dinners の d から
20 行目: where d.EventDate > DateTime.Now
21 行目: d を選択します。
[SqlCeException (0x80004005): ファイルは既に存在します。別のデータベース名を使用してみてください。[ ファイル名 = 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 接続、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 コンテキスト) +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 ソース、Expression`1 述語) +63
NerdDinner.Controllers.HomeController.Index() in D:\Sourcecode\NerdDinner\NerdDinner\Controllers\HomeController.cs:19
なぜこれが既存の .dbf ファイルで機能するのか、また不平を言うのかわかりません。デフォルトの動作を明示的に設定しようとさえしました
Database.SetInitializer(new CreateDatabaseOnlyIfNotExists<...>());
他の誰かがこれを経験しましたか?
- Cassini を再起動しても違いはないようです。
- このエラーを受け取った後に IE で更新を押すと、まったく同じページが正しく読み込まれます。