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