Ossendorf.Csla.DataPortalExtensionGenerator 0.0.1-alpha4.3

This is a prerelease version of Ossendorf.Csla.DataPortalExtensionGenerator.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Ossendorf.Csla.DataPortalExtensionGenerator --version 0.0.1-alpha4.3
NuGet\Install-Package Ossendorf.Csla.DataPortalExtensionGenerator -Version 0.0.1-alpha4.3
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="Ossendorf.Csla.DataPortalExtensionGenerator" Version="0.0.1-alpha4.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Ossendorf.Csla.DataPortalExtensionGenerator --version 0.0.1-alpha4.3
#r "nuget: Ossendorf.Csla.DataPortalExtensionGenerator, 0.0.1-alpha4.3"
#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 Ossendorf.Csla.DataPortalExtensionGenerator as a Cake Addin
#addin nuget:?package=Ossendorf.Csla.DataPortalExtensionGenerator&version=0.0.1-alpha4.3&prerelease

// Install Ossendorf.Csla.DataPortalExtensionGenerator as a Cake Tool
#tool nuget:?package=Ossendorf.Csla.DataPortalExtensionGenerator&version=0.0.1-alpha4.3&prerelease

DataPortal extensions for CSLA.NET

A Source Generator package that generates extension methods for IDataPortal<T> and IChildDataPortal<T>.
The extension methods are derived from annotated methods of business objects using CSLA.NET attributes like Fetch, Create, ....

How to install

dotnet add package Ossendorf.Csla.DataPortalExtensionsGenerator
<PackageReference Include="Ossendorf.Csla.DataPortalExtensionsGenerator" Version="0.0.1-pre02" PrivateAssets="all" ExcludeAssets="runtime" />

Either way adds the source generator to your project. Make sure to add PrivateAssets="all" ExcludeAssets="runtime" to mark it as a build dependency. Otherwise it flows to projects which depend on your project.

To use the generator, add the [Ossendorf.Csla.DataPortalExtensionsGenerator.DataPortalExtensions] attribute to a class which should containt the extensions.
For example:

[Ossendorf.Csla.DataPortalExtensionsGenerator.DataPortalExtensions]
public static partial class DataPortalExtensions {
}

Your business object:

namespace MyNamespace;

public class Address : BusinessBase<Address> {
    [Create]
    private void CreateLocally() {
        // creation logic
    }

    [Fetch]
    private async Task ById(Guid id) {
        // fetch logic
    }
}

This will generate the following code:

static partial class DataPortalExtensions {
    public static global::System.Threading.Tasks.Task<global::MyNamespace.Address> CreateLocally(this global::Csla.IDataPortal<global::MyNamespace.Address> portal) => portal.CreateAsync();
    public static global::System.Threading.Tasks.Task<global::MyNamespace.Address> ById(this global::Csla.IDataPortal<global::MyNamespace.Address> portal, global::System.Guid id) => portal.FetchAsync(id);
}

Raodmap

  • Special case commands to an extension like commandPortal.ExecuteCommand(<params>) which combines Create+Execute.
  • Support for generic business objects
  • Improve handling of csla method parameters which are internal and not available
  • Add configurability
    • Add attribute as prefix/suffix:
      • ById(id)FetchById(id)
      • ById(id)ByIdFetch(id)
    • Exclude non-public business objects from generation
    • Exclude methods with non-public parameter types
  • Add attribute to exclude methods explicitly

A lot of implementation details are derived/taken from the great series Andrew Lock: Creating a source generator. If you want to create your own source generator I can recommend that series wholeheartedly.

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.5.0-preview1 892 3/31/2024
0.4.1-preview1 108 3/1/2024
0.4.0-preview1 68 2/27/2024
0.3.0-preview3 323 2/25/2024
0.3.0-preview2 43 2/25/2024
0.2.0-preview1.9 44 2/25/2024
0.2.0-preview1 71 2/22/2024
0.1.0-preview2 53 2/21/2024
0.1.0-preview1 53 2/11/2024
0.0.1-alpha4.7 58 2/10/2024
0.0.1-alpha4.6 43 2/10/2024
0.0.1-alpha4.3 46 2/10/2024