簡體   English   中英

具有現有數據庫的實體框架-最新方法?

[英]Entity Framework with existing database - neatest approach?

我有一個現有的數據庫。 為了擺脫現有數據庫發生的“自創建數據庫以來上下文已更改”的異常,我按照所讀內容的建議在Global.asax.cs的Application_Start()中調用以下內容:

Database.SetInitializer<SomeEntities>( null );

問題是我需要為每個存在問題的現有實體添加一行到Application_Start:-

  1. 如果我為現有表添加新實體,那么我需要記住在Application_Start()中調用它。 問題是Application_Start已從我要添加的類中刪除,因此我傾向於忘記這一點,這意味着我一直在遇到異常。
  2. 從實體所作用的實體代碼上刪除了對該實體的操作,因此通過查看Entity類初始化器為null並不明顯。 這就是我一直忘記的原因之一-因為我在現有課程中看不到它。 同樣,如果刪除實體並從解決方案中刪除該類,則需要記住去Application_Start。
  3. 啟動代碼中充滿了Database.SetIntializer()調用。

理想情況下,我想在Entities類的構造函數中調用此函數(從DBContext派生)。 我嘗試了以下操作,但沒有成功:

Database.SetInitializer(false);

因此,我的問題是,在Entities類(即從DBContext派生的類)而不是Application_Start中設置初始化程序的最佳方法是什么? 也許是在Entities類中的靜態構造函數調用了Database.SetInitializer?

如果構造函數中的Database.SetInitializer(false)是正確的方法,那么我將堅持到底,看看我要去哪里。

您放入Global.asax.cs的代碼可以放入Context的靜態構造函數中。

public class MyContext : DbContext
{
    static MyContext ()
    {
        Database.SetInitializer<MyContext>(null);
    }

    //...
}

這里這里這里的參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM