繁体   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