Serialization is used to persist data from database to filesystem and from filesystem back to database.
Useful to persists node types, user types, etc.
By default all serializer are enebaled in appsettings.json. This can be changed to the needed serialized datas.
For creating a new serializer, the class must derive from BaseSerializer<> and ISerializer<> to get it working.
Registration in services:
services.AddTransient<ISerializer<FriendshipDataModel>, FriendshipSerializer>();
This is a simple implementation:
public class FriendshipSerializer : BaseSerializer<FriendshipDataModel>, ISerializer<FriendshipDataModel> { private FriendshipRepository _friendshipRepository; public FriendshipSerializer(IWebHostEnvironment webHostEnvironment, IOptions<NLessSettings> nlessSettings, ILogger<ISerializer<FriendshipDataModel>> logger, FriendshipRepository friendshipRepository) : base(webHostEnvironment, nlessSettings, logger) { _friendshipRepository = friendshipRepository; } protected override IEnumerable<FriendshipDataModel> GetAllData() { return _friendshipRepository.GetAll(); } protected override FriendshipDataModel DeserializeData(string data) { var model = JsonSerializer.Deserialize<FriendshipDataModel>(data, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); _friendshipRepository.CreateOrUpdate(model); return model; } protected override string GetSerializedData(FriendshipDataModel t) { return JsonSerializer.Serialize(t, new JsonSerializerOptions() { WriteIndented = true }); } protected override string GetRelativePath(FriendshipDataModel t) { return $"/Friendship/{t.Id}.json"; } protected override string GetRootPath() { return $"/Friendship"; } public string GetName() { return "Friendships"; } public string GetCategory() { return "Data"; } public int GetSortOrder() { return 50; } }
Some properties mainly used to display the serializer in the administration view