Several useful addons for EF (Entity Framework Core):
- UnPluralizing convention,
- Data Annotations with extra attributes,
- EntityId and Enum interface,
- Audit Info config,
- Generics.
*Note: Still in progres...
Also take a look into others packages:
-Open source (MIT or cFOSS) authored .Net libraries (@Infopedia.io personal blog post)
№ | .Net library | Description |
---|---|---|
1 | EFCore.BulkExtensions | EF Core Bulk CRUD Ops (Flagship Lib) |
2* | EFCore.UtilExtensions | EF Core Custom Annotations and AuditInfo |
3 | EFCore.FluentApiToAnnotation | Converting FluentApi configuration to Annotations |
4 | FixedWidthParserWriter | Reading & Writing fixed-width/flat data files |
5 | CsCodeGenerator | C# code generation based on Classes and elements |
6 | CsCodeExample | Examples of C# code in form of a simple tutorial |
If you find this project useful you can mark it by leaving a Github Star ⭐
And even with community license, if you want help development, you can make a DONATION:
_ or _
⚡
Please read CONTRIBUTING for details on code of conduct, and the process for submitting pull requests.
When opening issues do write detailed explanation of the problem or feature with reproducible example.
Want to Contact for Development & Consulting: www.codis.tech (Quality Delivery)
FEATURES:
Keeps table names singular in DB like Entities classes are (also keeping PascalCase) while DbSets remains in plural.
To set it up, call RemovePluralizingTableNameConvention
from OnModelCreating
:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.RemovePluralizingTableNameConvention();
...
}
NOTE: Useful for versions prior to .Net7, mainly for .Net6, since with .Net7+ it can be achieved directly by overriding a method in DbContext:
// In DbContext
protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
{
configurationBuilder.Conventions.Remove(typeof(TableNameFromDbSetConvention));
}
Are made to avoid using FluentAPI and keep all Db configs in a single place on Entity
(makes it more clear and simple - DRY principle)
Implemented with method ConfigureExtendedAnnotations
on modelBuilder called from OnModelCreating.
-New Attributes from the library:
Attributes | Description |
---|---|
[Index()] |
enables configuring Index on one or several columns |
[UniqueIndex()] |
enables configuring Unique Index on one or several columns |
[DefaultValue(object)] |
sets Db default value |
[DefaultValueSql("getdate()")] |
sets Db default value with Sql |
[ForeignKeyExtension(DeleteBehavior.)] |
extends FK attribute, adds option to set DeleteBehavior |
DeleteBehavior.NoAction |
sometimes needed to avoid fk cascade multiple paths and cycles |
-Native ones from EF are:
Attributes | Attributes | Attributes | Attributes |
---|---|---|---|
[Table(tblName)] |
[Key] |
[DatabaseGenerated()] |
[Owned] |
[Column(name, typeName)] |
[ForeignKey(FkName)] |
[Timestamp] |
[ComplexType] |
[Required] |
[Index(indName)] |
[ConcurrencyCheck] |
[NotMapped] |
[MaxLength(255)] |
[Index(indName, IsUnique)] |
[Precision(20, 4)] |
Notes:
[Precision]
is used for customizing Decimal type, default being (18, 2) meaning 18 significant digits of which 16 is for whole number and 2 decimal places.