1

Visual Web Developer。实体数据源模型。我有它创建新的数据库罚款。示例 创建SAMPLE1.MDF和SAMPLE1.LDF 当我运行我的应用程序时,它会创建另一个SAMPLE1_LOG.lDF文件。entity createdatabase 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()..常规连接字符串在网络配置创建只有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;集成安全性=真;用户实例= TRUE; multipleactiveresultsets = TRUE;应用=的EntityFramework”

在这种情况下

,使用TDSLLCData.mdf文件...

04/01/2012 ... ...后续实体 框架

功能 登录由ObjectContext.CreateDatabase方法

变化 当CreateDatabase方法是直接调用或通过使用代码创建的文件首先与SqlClie nt提供程序和连接字符串中的AttachDBFilename值,它会创建一个名为filename_log.ldf而不是filename.ldf(其中filename是由AttachDBFilename值指定的文件的名称)的日志文件。

影响。 此更改通过提供根据SQL Server规范命名的日志文件来改进调试。它应该没有意想不到的副作用。

http://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx

我在Windows XP在.NET 4中(不是.NET 4.5)......会寻找一些更多..不过貌似不能更改的问题。

2012年4月1日4:30 ... 好的,更多的狩猎和搜索以及我创建的数据库和数据库存在的一些不一致......所以.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公测改为创建_log.ldf文件以匹配使用数据库时怎样被创建。

感谢您的时间。

+0

列出您的代码。 – RBarryYoung 2012-04-01 00:35:54

回答

1

我从来没有使用过这个“mdf附件”功能,但我不太了解它,但根据xcopy deployment documentation,您不应该自己创建一个日志文件,因为它会在您附加中密度纤维板。文档还提到了命名,并说新的日志文件名以_log.ldf结尾。换句话说,这种行为似乎是设计上的,你不能改变它。

也许一个更重要的问题是,为什么你在意什么日志文件被称为?它是否会为您的应用程序带来任何问题?如果是这样,你应该提供这个问题的细节,看看是否有人有解决方案。

+0

它并不重要,因为现在正在对空数据库执行sql脚本来创建模式,因为我的托管提供程序需要手动在Web面板中创建数据库shell ...然后让程序对脚本执行脚本数据库为客户创建新数据库时。 ------当你使用objectcontext.createdatabase创建数据库时,它不会创建_LOG.LDF文件......它只是创建.ldf扩展名......这是在EF4中。我看到测试版EF4.5改变了这个来创建_LOG.LDF文件。 EF4的情况并非如此。 – 2012-04-03 04:03:11