我有一个使用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中点击刷新将使正确相同的页面加载正确。