NKit.Windows 1.4.1

dotnet add package NKit.Windows --version 1.4.1
NuGet\Install-Package NKit.Windows -Version 1.4.1
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="NKit.Windows" Version="1.4.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NKit.Windows --version 1.4.1
#r "nuget: NKit.Windows, 1.4.1"
#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 NKit.Windows as a Cake Addin
#addin nuget:?package=NKit.Windows&version=1.4.1

// Install NKit.Windows as a Cake Tool
#tool nuget:?package=NKit.Windows&version=1.4.1

.NET Toolkits (class libraries) containing reusable code for speeding up development of any .NET applications.
NKit.Standard is the .NET Standard compatible version of NKit.
NKit.Windows is the .NET Framework compatbile version of NKit.
NKit.Core is the latest .NET Core compatible version of NKit.

Product Compatible and additional computed target framework versions.
.NET Framework net472 is compatible.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
1.4.1 146 8/24/2023
1.3.8 568 4/20/2022
1.3.7 496 4/20/2022
1.3.6 385 2/2/2021
1.3.5 474 11/20/2020
1.3.4 432 11/9/2020
1.3.3 454 11/9/2020
1.3.1 626 9/22/2019 522 8/14/2019
1.3.0 547 8/7/2019

*   2022-04-22:

-   Fixed the SqliteDatabaseWindows.TableExistsInDatabase to check if the reader is not null before reading.
-   Fixed the DatabaseWindows.GetTablesMentionedInQuery to return an empty list instead of throwing an exception.

*   2022-04-03:

-   Added overloads for NKitMvcController to allow reading parent and second parent surrogate keys without startDate and endDate.

*   2022-05-12:

-   Implemented option on the NKitMvcController to select whether or not to filter by the date range and on the FilterModel etc.

*   2022-05-14:

-   Implemented SqlTableExists in LinqEntityContextWindows.
-   Implemneted stubs in LinqEntityContextWindows for logging messages, actions and exceptions. These methods need to be implemented by sub classes.

*   2022-05-15:
-   Implemented ViewModels, CsvModels, data queries for grid and paging in the NKitDbContext and a controller for NKitLogEntry models.

*   2022-05-23:
-   Implemented NKitLoggingManager which is a wrapper around an ILogger and also logs to the database.

*   2022-05-31:
-   Implemented minor fixes across multiple utilities.
-   Fixed the GetEntitiesByField in the NKitDbContext which was making a call to a method via reflection and using the wrong signature.

*   2022-06-03:
-   Implemented fix for DataValidator where the ValidateGuidNotEmpty method was not set to static.

*   2022-08-08:
-   Changed the Windows Exception Handler to allow providing a parameter to override the global setting for GOC.Instance.ShowMessageBoxOnException i.e. even if the global settings is set to false,
it can be overridden for a specific call to the ExceptionHandler to display an exception with a message box.

*   2022-09-01:
-   Added indexers to all EntityCaches and including integer based indexers on the generic entity cache where a dictionary is used.

*   2022-09-09:
-   Implemented a cancel feature on the Wcf rest service on the before put and before post action methods to allow the subscribers to the event to cancel the put or post.

*   2022-09-13:
-   Fixed issue where the .NET Core project was referencing the Windows project which it shouldn't have been.

*   2022-09-18:
-   Changed the EntityReader ConvertValueTypeTo method to check if the input value is a string and null or empty. If it is, it returns the default
value type of the type that it needs to convert to.

*   2022-10-15:
-   Upgraded Newtonsoft.Json from version 12 to 13.
-   Added an extra property SecondOther to the ConfirmationModel.

*   2022-10-18:

-   Added MVC extension method for querying the application's version from the main assembly.

*   2022-11-08:
-   Changed the NKit EmailClient to not send emails if there are no To email recipients specified on the call.

*   2022-11-30:

-   Added extra overloads to the GetConfirmationModelFromSearchParametersString in the NKitMvcController to be able to pull other fields from searcg strings.
-   Added extra third parent fields to the ConfirmationDialog.
-   Added extra ConvertEmptyGuidToNull overload to allow converting a string that contains an empty GUID to null.

*   2022-12-02:

-   Fixed the GenerateSimplePassword in DataShaperWindows which was not using the correct password length parameter.
-   Fixed the GenerateSimplePassword in DataShaperWindows to not append special characters if it's set to 0.

*   2022-12-06:

-   Added method in DataShaper to replace new lines in text.

*   2022-12-14:

-   Added method ParseEmailAddressesFromText to DataShaperWindows and DataShaperCore to read email addresses from an input text.
-   Added method ParsePhoneNumbersFromText to DataShaperWindows and DataShaperCore to read phone numbers from an input text.
-   Added method GetCsvOfStringList to DataShaperWindows and DataShaperCore to convert a list of strings to a single CSV string.

*   2022-12-17:
-   Changed the AppSingletonWindows.InitializeLogger to initialize both the GOCWindows.Instance.Logger as well as the GOC.Instance.Logger
in order to apply the settings to both loggers depending on whether users are using GOC or GOCWindows.

*   2022-12-19:
-   Fixed the DataShaper.ParsePhoneNumbersFromText to split text by commas instead of spaces.
-   Fixed the DataShaper.ParseEmailAddressesFromText to not include duplicate email addresses.

*   2022-12-20:
-   Fixed issue with PhoneNumberValidator.GetConsecutiveCharsInPhoneNumberStr to cater for phone numbers that are less than 10 or 11 characters long.

*   2022-12-21:
-   Added methods GngetAppVersionNumbersFromString and IsAppVersionGreaterThan to the DataShaper to extract the integer values out of an app version string
as well be able to compare two version strings. For method IsAppVersionGreaterThan: major, minor, build and revision of the versionString need to be greater
than those of versionStringToCompare to in order for the result to be true.

*   2023-01-13:
-   Changed the LinqEntityContextWindows and settings file classes to allow for configuring of whether basic CRUD operations should run under transactions or not.
Added setting UseTransactionsOnCrudOperations on the Database settings for this configuration.

*   2023-01-19:
-   Added IdentifierInt and IdentifierString on the ConfirmationDialog for entities that have string and integer surrogate keys.
-   Added GetCsvFileResult to NKitControllerWindows to allow converting an entity cache with integer surrogate keys to a csv file.

*   2023-04-10:
-   Added overload to GetConfirmationModelFromSearchParametersString to parse thirdParentId.

*   2023-05-11:
-   Added methods to DataShaper class to shape URL with or without an http or https prefix.

*   2023-06-12:
-   Added AppendHttpsPrefixToUrl to shape URL with or without an http or https prefix.

*   2023-07-10:
-   Fixed the EntityCache to do a null check if a en entity is null and if so it must exclude it from searching through it.

*   2023-07-20:
-   Fixed the SqliteDatabaseTableWindows.AddColumnsByEntityType to exclude any properties for which it cannot find an equivalent Sqlite type.
-   Fixed the ParseReaderToEntities method of Sqlite to check if the type is DateTime and if it is it will pull the string out of the reader and then convert to DateTime.
-   Fixed the SqliteDatabaseTableWindows.Query method to convert the a Guid value to query by to a string because Sqlite cannot query by guid or uniqueidentifier, it will query those columns by a string.

*   2023-07-22:
-   Added SqliteEntityContext, SqliteSettings and SqliteIndexer classes to perform basic CRUD operations on a Sqlite database based on entities.

*   2023-07-23:
-   Added DateTimeHelper class in the standard library to try convert a a string to a DateTime based on a list of different date time formats.
-   Changed the DataHelperWindows.ParseReaderToEntities to use this DateTimeHelper to convert strings to DateTime.
-   Changed the SqliteEntityContext CreateTable, DropTable and CreateIndexers to use an existing connection and transaction when running the SQL instead of creating a new connection and transaction every time.
-   Added more descriptive error message on DataHelperWindows.ParseReaderToEntities when we cannot find a column for on a reader: $"Could not find column {p.Name} for entity {entityType.Name} on reader."

-   Changed the SqliteDatabaseTableColumnWindows to read from the schema whether a column is a primary key or not.
-   Changed the SqliteDatabaseTableWindows to not call a sproc to determine whether columns are key or foreign keys.
-   Changed the SqliteEntityContext to load a SqliteDatabaseWindows and populate the columns from the schema to compare against columns added by entities.
-   Changed SqliteEntityContext to use the SqliteDatabaseTableWindows read from the schema before running CRUD queries to use the columns based on what exists in the database instead of properites from entities which may not exist in the database.
-   Changed the SqliteDatabaseTableWindows to ignore properties that exist on the entity but don't exist in the database.
-   Added Sqlite type "integer" to SqliteTypeConverterWindows because only "int" was understood previously.

*   2023-07-24:
-   Fixed the SqliteTypeConverterWindows to map uniqueidentifier and booleans to strings because Sqlite doesn't support those types.
-   Fixed the DataHelperWindows.ParseReaderToEntities to not throw exception an exception if a column doesn't exist on the DataReader, instead it will ignore it.
-   Fixed the SqliteEntityContext Update and Delete to not commit transactions. Instead the callers of the methods should commit the transaction.
-   Fixed the SqliteDatabaseTableWindows Delete method convert Guid to strings when filtering by a column because Sqlite cannot query by a Guid or uniqueidentifier.
-   Upgraded to System.Data.SQLite.Core package to 1.0.118 in the Windows version of NKit.

*   2023-07-25:
-   Changed the SqliteEntityContext allow for reseting the SqliteDatabaseWindows from the outside in case the database schema changes.
-   Fixed the SqliteEntityContext to check if a database table exists running any CRUD queries on it because run SQL scripts on a table that doesn't exist.
-   Changed Sqlite type "binary" to blob which is the correct type in Sqlite to store byte[].

*   2023-07-26:
-   Changed the SqliteDatabaseTableWindows to save datetime values to a a default string format (stored in SqliteTypeConverterWindows) to match Android apps with that format.
-   Changed to set the TypeName of parameters to the DataType of a column instead of the DbType to the SqlDbType of the column.

*   2023-07-29:
-   Changed the SqliteDatabaseTableWindows to convert bool values to strings before saving or querying out of the Sqlite database.
-   Changed the SqliteDatabaseTableWindows to convert char values to strings before saving or querying out of the Sqlite database.

*   2023-07-30:
-   Added method AddColumn to SqliteDatabaseTableWindows and SqlDatabaseTableWindows to be able tadd additional columns to a table that may not exist on an entity.
-   Added option on CreateTable method of SqliteEntityContext to be able to specify additional columns that are not on the entity.

*   2023-08-15:
-   Upgraded System.Linq.Dynamic.Core to 1.3.4.

*   2023-08-19:
-   Extended lengths of NKitLogEntry and NKitHttpExceptionResponse string field to varchar max.

*   2023-08-24:
-   Removed the NKit.Windows.Standalone project as it's never used.
-   Upgraded System.Drawing.Comming from 5.0.0 to 7.0.0 on NKit.Standard.