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

相關問題