LMB.GenericEntityBase 1.1.0

dotnet add package LMB.GenericEntityBase --version 1.1.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.
<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 and Polyglot Notebooks. 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 Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
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 10,066 10/6/2017
1.0.0 1,034 10/4/2017

Portability for .NET Standard.

It has the same features as the previous package.