使用实体框架重构数据库

本文关键字:重构 数据库 框架 实体 | 更新日期: 2023-09-27 18:16:54

我正在使用一个旧的数据库,我们想做一些改变。我一直在阅读我喜欢的流畅API,但是我读得越多,就越觉得必须从代码优先的角度来看待它。我想知道的是,有没有办法利用流畅的API当你有数据库第一?我希望做的一些事情是重构数据库端的一些列名,并将它们映射到现有的数据模型,这样我就可以在整个应用程序中逐步更改它们。我想知道是否有人有过这样做的经验,从哪里开始最好。

使用实体框架重构数据库

实体框架是应用程序和数据库之间的ORM。您可以先创建模型,先编写代码或先创建数据库,然后仍然使用这些特性。如果您担心实体框架将对数据库做什么,那么您需要查看迁移。如果将迁移配置为自动并且允许数据丢失,那么您可能会通过更改类而丢失数据。但是,如果您正确地管理它,您可以使用EF按原样对数据库建模,然后使用迁移来实际实现数据库。我要说的是,Fluent API确实是首先为代码量身定制的,做下面的工作实际上比从数据库生成POCO和只使用代码要多。不管怎样,我希望这能有所帮助。

你必须创建一个从EntityTypeConfiguration派生的配置

对于你的例子,

public class CustomerConfiguration: EntityTypeConfiguration<Customer>;
{
    public CustomerConfiguration(): base()
    {
    HasKey(p => p.Id);
    Property(p => p.Id).
        HasColumnName("Id").
        HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).
        IsRequired();
    Property(p => p.dtUpdated).
        HasColumnName("EntryTs").
        IsRequired();
    ToTable("Customers");
    }
}

或流畅的api…modelBuilder.Entity<ClassName>().ToTable("DatabaseTableName", "DatabaseSchema");

https://msdn.microsoft.com/en-us/library/jj591617 (v = vs.113) . aspx