LMB.GenericEntityBase 1.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package LMB.GenericEntityBase --version 1.0.0
NuGet\Install-Package LMB.GenericEntityBase -Version 1.0.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.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add LMB.GenericEntityBase --version 1.0.0
#r "nuget: LMB.GenericEntityBase, 1.0.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.0.0

// Install LMB.GenericEntityBase as a Cake Tool
#tool nuget:?package=LMB.GenericEntityBase&version=1.0.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 Framework net46 is compatible.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 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,060 10/6/2017
1.0.0 1,031 10/4/2017