簡體   English   中英

在實體框架中首先創建數據庫和代碼

[英]Creating database first and code first in Entity Framework

請我有一個問題,我在谷歌上進行了廣泛的搜索,但無法得到具體的答案。

我有一個項目。 我已經使用了 Identity 框架,因此它首先使用代碼生成了數據庫。

我打算將數據庫優先用於后續表。

我的問題如下:

  1. 我可以先生成數據庫,使其使用與代碼優先實體相同的DbContext嗎?

  2. 他們會有單獨的連接字符串嗎?

  3. 我必須繼續使用代碼優先,還是可以將這兩種方法結合在一個項目中?

我實際上是實體框架的新手。

謝謝

  1. 我可以先生成數據庫,使其使用與代碼優先實體相同的 DbContext 嗎?

是的你可以。 你可以先用代碼生成數據庫模式,然后再轉向數據庫,當你先用數據庫生成DbContext時,它會遵循你先用代碼生成的規則。

  1. 他們會有單獨的連接字符串嗎?

不,我想你必須手動完成。

  1. 我必須繼續使用代碼優先,還是可以將這兩種方法結合在一個項目中?

在項目中同時使用 code first 和 db first 不是一個好習慣,所以我建議只使用 code-first。

有關更多信息,您可以查看

  1. 我可以先生成數據庫,使其使用與代碼優先實體相同的DbContext嗎?

不,您不能,假設您使用ADO.NET Entity Data Model / .edmx將您生成的數據庫表導入項目。

原因是,當您使用Code First時, web.config中的連接字符串將如下所示:

<connectionStrings>
  <add name="YOUR_IDENTITY_CONTEXT_NAME" providerName="System.Data.SqlClient"
    connectionString="Data Source=xxx; Initial Catalog=xxx; User Id=xxx; Password=xxx;" />
</connectionStrings>

但是,當您使用.edmx將表導入到項目中的模型/類中時,它不會看到您使用Code First擁有的現有連接字符串。 相反,您必須創建一個新的連接字符串,如下所示:

<connectionStrings>
  <add name="YOUR_DATABASE_FIRST_CONTEXT_NAME" providerName="System.Data.EntityClient"
    connectionString="metadata=res://*/xxx|res://*/xxx|res://*/xxx;provider=System...." />
</connectionStrings>


  1. 他們會有單獨的連接字符串嗎?

是他們會。


  1. 我必須繼續使用代碼優先,還是可以將這兩種方法結合在一個項目中?

如果您可以一直使用Code First ,那就太好了,但如果您不能,還有其他方法可以混合使用Code FirstDatabase First方法:

  1. 只需使用 2 個單獨的連接字符串

    我通常將 Identity DbContext 命名為AppIdentityDbContext ,而.edmx生成的數據上下文只是AppDbContext

  2. 使用Entity Framework以外的其他 ORM

    您不必在項目中堅持使用 ORM。 您可以將Entity Framework用於身份信息,並使用其他東西,例如Dapper來閱讀。

暫無
暫無

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

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