[英]Creating database first and code first in Entity Framework
請我有一個問題,我在谷歌上進行了廣泛的搜索,但無法得到具體的答案。
我有一個項目。 我已經使用了 Identity 框架,因此它首先使用代碼生成了數據庫。
我打算將數據庫優先用於后續表。
我的問題如下:
我可以先生成數據庫,使其使用與代碼優先實體相同的DbContext
嗎?
他們會有單獨的連接字符串嗎?
我必須繼續使用代碼優先,還是可以將這兩種方法結合在一個項目中?
我實際上是實體框架的新手。
謝謝
是的你可以。 你可以先用代碼生成數據庫模式,然后再轉向數據庫,當你先用數據庫生成DbContext時,它會遵循你先用代碼生成的規則。
不,我想你必須手動完成。
在項目中同時使用 code first 和 db first 不是一個好習慣,所以我建議只使用 code-first。
有關更多信息,您可以查看此
- 我可以先生成數據庫,使其使用與代碼優先實體相同的
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>
- 他們會有單獨的連接字符串嗎?
是他們會。
- 我必須繼續使用代碼優先,還是可以將這兩種方法結合在一個項目中?
如果您可以一直使用Code First
,那就太好了,但如果您不能,還有其他方法可以混合使用Code First
和Database First
方法:
只需使用 2 個單獨的連接字符串
我通常將 Identity DbContext 命名為AppIdentityDbContext
,而.edmx
生成的數據上下文只是AppDbContext
。
使用Entity Framework
以外的其他 ORM
您不必在項目中堅持使用 ORM。 您可以將Entity Framework
用於身份信息,並使用其他東西,例如Dapper來閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.