LMB.GenericEntityBase 1.1.0

.NET Standard 2.0
NuGet\Install-Package LMB.GenericEntityBase -Version 1.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
dotnet add package LMB.GenericEntityBase --version 1.1.0
<PackageReference Include="LMB.GenericEntityBase" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add LMB.GenericEntityBase --version 1.1.0
#r "nuget: LMB.GenericEntityBase, 1.1.0"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install LMB.GenericEntityBase as a Cake Addin
#addin nuget:?package=LMB.GenericEntityBase&version=1.1.0

// Install LMB.GenericEntityBase as a Cake Tool
#tool nuget:?package=LMB.GenericEntityBase&version=1.1.0

Generic Entity Base

This is a template for creating entity models.

By using this template, we end up with the need to duplicate entity properties in view models that represent them. The great advantage of this is that we exterminate the maintenance nightmare that usually entails in having to remember to mirror changes to the entity to its view models.

How it works?

Using the power of interfaces, we create a entity base model that can be inherited from.

To help us a litle bit more, we implement those interfaces into two abstract classes Entity and Entity<T>. The first must be used for entities with composite primary key and the seconde one shall be used for entities with single primary key where the gereric type <T> will be the primary key type.

All the properties of both abstract classes are virtual and can be overrided if needed. A good example of this kind of need is: we dont't want store one of those properties into database, and to acomplish this, we need mark this property with [NotMapped] attribute.

How to use this extension?

Here is a entity with composite primary key:

public class MyEntityWitCompositeKey : Entity
{
    public int EntityFirstCompsiteKey { get; set; }
    public int EntitySecondCompsiteKey { get; set; }

    [NotMapped]
    public override DateTime ModifiedDate { get; set; }

    public override object GetId()
    {
        return new object[] { EntityFirstCompsiteKey, EntitySecondCompsiteKey };
    }
}

And a entity with integer primary key

public class MyEntity : Entity<int>
{
    public override int Id { get; set; }

    [NotMapped]
    public override string ModifiedBy { get; set; }
}

Where to get this extension?

You can install this extension direct from Nuget:

Install-Package LMB.GenericEntityBase

Or you can download this github project and copy the Entity.cs file, along with all interfaces files, direct into your project.

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows
.NET Core netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard2.0 netstandard2.1
.NET Framework net461 net462 net463 net47 net471 net472 net48
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen40 tizen60
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on LMB.GenericEntityBase:

Package Downloads
LMB.FluentHttpClient

This is an HTTP client that can be used to consume HTTP APIs and was developed using the Fluent Interface design pattern.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.0 9,654 10/6/2017
1.0.0 801 10/4/2017

Portability for .NET Standard.

It has the same features as the previous package.