LMB.GenericEntityBase
1.1.0
dotnet add package LMB.GenericEntityBase --version 1.1.0
NuGet\Install-Package LMB.GenericEntityBase -Version 1.1.0
<PackageReference Include="LMB.GenericEntityBase" Version="1.1.0" />
paket add LMB.GenericEntityBase --version 1.1.0
#r "nuget: LMB.GenericEntityBase, 1.1.0"
// 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 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. |
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.
Portability for .NET Standard.
It has the same features as the previous package.