首先在实体框架中创建数据库,首先创建代码



请问我有一个问题,我在谷歌上广泛搜索,但无法得到具体的答案。

我有一个项目。我已经使用了 Identity 框架,因此,它首先使用代码生成了数据库。

我打算对后续表使用数据库优先。

我的问题如下:

  1. 是否可以先生成数据库,使其使用与代码优先实体相同的DbContext

  2. 它们是否具有单独的连接字符串?

  3. 我是否必须继续使用代码优先,或者这两种方法是否可以组合在一个项目中?

我实际上是实体框架的新手。

谢谢

  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 个单独的连接字符串

    我通常将身份命名为 DbContextAppIdentityDbContext,而.edmx生成的数据上下文只是AppDbContext

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

    您不必在项目中坚持使用一个ORM。您可以将Entity Framework用于标识内容,并使用其他内容(例如 Dapper(进行阅读。

  1. 我是否可以先生成数据库,以便它使用与代码第一个实体相同的 DbContext?

可以。可以先通过代码生成数据库模式,然后再转到数据库,当你先使用数据库生成 DbContext 时,它将遵循你先通过代码生成的规则。

  1. 它们会有单独的连接字符串吗?

不,我想你必须手动完成。

  1. 我是否必须继续使用代码优先,或者这两种方法是否可以组合在一个项目中?

在项目中同时使用代码优先和 db 优先不是一个好的做法,所以我建议只使用代码优先。

欲了解更多信息,您可以查看此内容

相关内容

  • 没有找到相关文章

最新更新