视觉 Web 开发人员。实体数据源模型。我让它创建新的数据库很好。示例创建 SAMPLE1.MDF 和 SAMPLE1.LDF 当我运行我的应用程序时,它会创建另一个 SAMPLE1_LOG.lDF 文件。
当我运行 createdatabase 时,有没有可以为日志文件指定 _LOG.ldf 的地方?SQL 2008 r2。
当我运行 DeleteDatabase 函数时它搞砸了...... 2个日志文件......
它为什么不创建文件 SAMPLE1_Log.ldf 以开始,如果那是它正在寻找的...
谢谢你的时间,弗兰克
// database or initial catalog produce same results...
// strip the .mdf off of newfile and see what happens?
// nope. this did not do anything... still not create the ldf file correctly!!!
// sample1.mdf, sample1.ldf... but when run, it creates sample1_log.LDF...
newfile = newfile.Substring(0, newfile.Length - 4);
String mfile = "Initial Catalog=" + newfile + ";data source=";
String connectionString = FT_EntityDataSource.ConnectionManager.GetConnectionString().Replace("data source=", mfile);
// String mexclude = @"attachdbfilename=" + "|" + "DataDirectory" + "|" + @"\" + newfile + ";";
// nope. must have attach to create the file in the app_data, otherwise if goes to documents & setting, etc sqlexpress.
// connectionString = connectionString.Replace(mexclude, "");
Labeldebug2.Text = connectionString;
using (FTMAIN_DataEntities1 context = new FTMAIN_DataEntities1(connectionString))
{
// try
// {
if (context.DatabaseExists())
{
Buttoncreatedb.Enabled = false;
box.Checked = true;
boxcreatedate.Text = DateTime.Now.ToString();
Session["zusermdf"] = Session["zusermdfsave"];
return;
// Make sure the database instance is closed.
// context.DeleteDatabase();
// i have entire diff section for deletedatabase.. not here.
}
// View the database creation script.
// Labeldebug.Text = Labeldebug.Text + " script ==> " + context.CreateDatabaseScript().ToString().Trim();
// Console.WriteLine(context.CreateDatabaseScript());
// Create the new database instance based on the storage (SSDL) section
// of the .edmx file.
context.CreateDatabaseScript();
context.CreateDatabase();
}
拿出所有的尝试,抓住,所以我可以看到任何可能发生的事情......
==================================================== =========================
解决问题时的粗略代码..
它创建的连接字符串
metadata=res://*/FT_EDS1.csdl|res://*/FT_EDS1.ssdl|res://*/FT_EDS1.msl;provider=System.Data.SqlClient;provider connection string="Initial Catalog=data_bac100;数据源=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\data_bac100.mdf;集成安全=True;用户实例=True;multipleactiveresultsets=True;App=EntityFramework"
在此示例中,要创建的文件是“data_bac100.mdf”。它创建 data_bac100.mdf 和 data_bac100.ldf
当我实际使用此文件和表运行时,它会自动创建 data_bac100_log.LDF
1) 只是试图不创建 ldf,所以当系统运行时,它只会立即创建一个 ...
2) 初始目录和/或数据库关键字仅添加到连接字符串以运行 createdatabase().. 在 web 配置中创建的常规连接字符串只有 attachdbfilename 内容,并且工作正常。
我有 1 个用于无限数据库的连接字符串,主数据库在 web.config 中。我使用基于用户角色的初始化部分,无论是访问者、成员、管理员、匿名还是未经过身份验证...设置数据库正确使用表达式生成器,并使用正确的值解析连接字符串以供数据库操作。这一切都运行良好。
实体框架自动生成脚本。我已经尝试过使用和不使用 .mdf 扩展名,没有区别......认为也许某处有一个设置包含 ldf 文件的命名约定......
最终,当开始尝试部署不使用 APP_Data 文件夹的地方时,所有这些都将化为乌有......
这是运行应用程序时创建的连接字符串示例 metadata=res://*/FT_EDS1.csdl|res://*/FT_EDS1.ssdl|res://*/FT_EDS1.msl;provider=System.Data.SqlClient ;provider connection string="data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\TDSLLC_Data.mdf;integrated security=True;user instance=True;multipleactiveresultsets=True;App=EntityFramework"
在这种情况下,使用 TDSLLCData.mdf 文件...
2012 年 4 月 1 日... 跟进... 实体框架
由 ObjectContext.CreateDatabase 方法创建的功能日志文件
change 当 CreateDatabase 方法被直接调用或使用 Code First 与 SqlClient 提供程序和连接字符串中的 AttachDBFilename 值时,它会创建一个名为 filename_log.ldf 而不是 filename.ldf 的日志文件(其中 filename 是文件的名称由 AttachDBFilename 值指定)。
影响。此更改通过提供根据 SQL Server 规范命名的日志文件来改进调试。它应该没有意外的副作用。
http://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx
我在使用 .net 4(不是 .net 4.5)的 Windows XP 上......会寻找更多......但看起来是一个无法改变的问题。
2012 年 4 月 1 日,4:30... 好吧,更多的搜索和搜索以及我在 createdatabase 和 databaseexists 中遇到的一些不一致...所以 .net 4.5 应该添加 _log.ldf,而不仅仅是 . ldf 文件,所以他们一定是出于某种原因解决了这个问题....
发现其他人有同样的问题,但不同的服务器.... MySQL 有一个用于 EF4 的连接器,当前版本是 6.3.5,它的主要功能工作正常,但它仍然存在一些方法的问题,例如 •System.Data。 Objects.ObjectContext.CreateDatabase() •System.Data.Objects.ObjectContext.DatabaseExists() 这使得难以充分使用模型优先方法。可以通过手动编辑 MySQL 脚本(可通过 CreateDatabaseScript 方法获得)。MySQL 团队似乎并不急于解决这些错误,我不确定他们的实际承诺水平是多少,但肯定比以前低了。话虽如此,SQL CE 的相同方法也失败了(它们没有实现,我认为 MS 团队不太可能很快解决这个问题)。
下面的空间不足...只是在创建数据库时出现问题,它没有创建_log.ldf文件,而只是ldf文件,然后使用数据库,它会创建一个_log.ldf文件.. .现在你有2个ldf文件..一个变得无效..然后当数据库完成后,删除它,然后尝试创建一个新的,并且存在一个ldf文件,它不会工作....
事实证明,这正是 EF4 的方式,他们使用 EF4.5 beta 进行了更改,以创建 _log.ldf 文件以匹配使用数据库时创建的文件。
谢谢你的时间。