In this post let's have a look at another feature
  EF Core 6.0
  brings to the table.
  Consider in your context, you have this specific type, and you want to
  maintain a similar configuration for that property throughout all your
  entities.
Let's go by a small example. Say I have multiple decimal properties in my entities, and I want all of them
  to be decimal(18,4) instead of decimal(18,2) which is
  the default.
public class OrderItem { public int Id { get; set; } public int OrderId { get; set; } public decimal Amount { get; set; } public decimal Discount { get; set; } }
  Here I have two decimal properties in the same Entity. If I want to configure
  these to be decimal(18,4), I need to update the configuration for
  each property.
  EF Core 6.0 exposes this new method ConfigureConventions(ModelConfigurationBuilder configurationBuilder) in DbContext which we can now override.
protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder) { configurationBuilder .Properties<decimal>() .HavePrecision(18, 4); }
  And if we create a migration for this, we can see EF is using decimal(18,4) for all my decimal properties without me having to configure for each
    of the properties. 
![]()  | 
| ConfigureConventions | 
protected override void OnModelCreating(ModelBuilder modelBuilder) { // other configuration modelBuilder.Entity<OrderItem>(builder => { builder .Property(x => x.Discount) .HasPrecision(18, 2); }); }
And if you add in a migration now,
![]()  | 
| Override per property | 
  You can see only for the Discount property Scale is changed.
  There are other great use cases, you can read more on,
Pre-convention model configuration
Pre-convention model configuration
Happy Coding.
Regards,
  Jaliya


No comments:
Post a Comment