当您可以直接在数据库中使用SQL时,运行EF迁移有什么意义?

时间:2018-09-01 23:04:38

标签: entity-framework aspnetboilerplate asp.net-boilerplate

How to create View (SQL) from Entity Framework in ABP Framework

由于声誉不允许发表评论。仅尝试获取有关将数据库连接到Entity Framework的更多信息,而不必切换到代码优先的开发风格。查看所选答案的响应(他告诉OP,基本上要在数据库中执行相同的操作,但是要使用EF,然后添加一个额外的步骤,其中EF “ ...忽略...” 先前的说明...

我想直接在SQL中创建表并设计数据库,并让csharp库仅读/写表值(有点像dapper的功能,它不能替换您的数据库,只是可以正常工作沿着它的一面)。

这些教程没有讨论如何将数据库与项目集成。它是brushes over the subjectignores it completely,还是讨论了如何替换它。

不想做任何EF migrations(我不想/不需要每次决定运行,复制或转移项目时都销毁/创建数据库)。任何和所有数据库回溯(备份/还原)都应使用SQL并通过SQL进行(在我的工作环境中)。


请明确说明我要学习的内容: 专门从事数据库管理(构建数据库架构,管理和监视数据并已建立具有已建立数据的现有数据库)的人员如何连接到项目以获取数据(再次特别参考DapperQuery功能)。

我想集成和设计微服务,有些可能共享相同的数据库连接或依赖另一个。但是我只是想在一个干净的强类型类实体中读取数据,并且如果需要的话,也许还要在其他地方处理插入/更新。

我更喜欢使用Dapper而不是EF,但是ABP与EF的设计紧密集成在一起,要避免使用它,而不是仅仅与它一起使用,更让人头疼。

1 个答案:

答案 0 :(得分:0)

您应该能够像使用DB-first配置的任何其他项目一样,在ABP下映射EF。

我用于EF的一致方法:(数据库优先)

  1. 定义实体以匹配表/视图结构。
  2. 根据需要定义扩展了EntityTypeConfiguration<TEntity>的配置类以及相关的ToTable()HasKey()以及用于关系的任何HasMany / HasRequired / HasOptional。
  3. 在DbContext.OnModelCreating中:modelBuilder.Configurations.AddFromAssembly(GetType().Assembly);加载所有实体配置。 (假设DbContext与模型/配置替换GetType().Assembly位于同一程序集中,以指向实体程序集。
  4. 关闭迁移。在DbContext构造函数中:Database.SetInitializer<MyDbContext>(null);

EF提供的功能远不止将表映射到类。通过映射实体之间的关系,EF可以帮助生成优化的查询,以跨这些相关实体检索数据。这样一来,您就可以在不返回不必要数据的情况下拉平数据结构,取代对视图的需要,并通常减少从数据库到应用程序服务器的所有数据传输量。