Jed*_*dja 11 asp.net-mvc entity-framework-4 sql-server-ce-4 asp.net-mvc-3
我有一个使用SQL Server CE 4.0的ASP.NET MVC 3 Beta网站.使用ScottGu的NerdDinner示例和我自己的代码,我有时会在尝试访问数据库时遇到以下异常:
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文件一起工作,有时会抱怨它.我甚至尝试使用显式设置默认行为
Database.SetInitializer(new CreateDatabaseOnlyIfNotExists<...>());
Run Code Online (Sandbox Code Playgroud)
还有其他人经历过这个吗?
很抱歉重新提出这样一个旧问题,但我今天遇到了这个问题,并找到了一个解决方法,不涉及安装旧版本的CTP.
来自博客帖子的正确网址是http://www.hanselman.com/blog/PDC10BuildingABlogWithMicrosoftUnnamedPackageOfWebLove.aspx(大约在博客文章的中途)
*进入您的AppStart_SQLCEEntityFramework.cs文件和DefaultConnectionFactory行:*
Database.DefaultConnectionFactory = new SqlCeConnectionFactory(
"System.Data.SqlServerCe.4.0",
HostingEnvironment.MapPath("~/App_Data/"),"");
Run Code Online (Sandbox Code Playgroud)
我的特定数据库放在App_Data文件夹中,但我假设如果你不是,你应该能够改变适合的路径,它会起作用.
希望这可以帮助!
归档时间: |
|
查看次数: |
1723 次 |
最近记录: |