我有一个使用SQL Server CE 4.0的ASP.NET MVC 3 Beta网站。既 ScottGu的NerdDinner例子 和我自己的代码,一旦我尝试访问数据库,我有时会得到以下异常:
文件已存在。尝试使用其他数据库名称。 [文件名= D:\ Sourcecode \ NerdDinner \ NerdDinner \ App_Data \ NerdDinners.sdf] 第17行:公共ActionResult索引() 第18行:{ 第19行:var dinners =来自nerdDinners.Dinners中的d 第20行:其中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 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谓词)+63 D:\ Sourcecode \ NerdDinner \ NerdDinner \ Controllers \ HomeController.cs中的NerdDinner.Controllers.HomeController.Index():19
我无法弄清楚为什么它有时会与现有的.dbf文件一起工作,有时会抱怨它。我甚至尝试使用显式设置默认行为
Database.SetInitializer(new CreateDatabaseOnlyIfNotExists<...>());
还有其他人经历过这个吗?
- 重新启动Cassini似乎没有什么区别。
- 在收到此错误后在IE中点击刷新将使正确相同的页面加载正确。