public static void PostRetrieving(BigStringMixin mixin, PostRetrievingContext ctx) { var bs = (BigStringEmbedded)mixin.MainEntity; PropertyRoute pr = FindPropertyRoute(bs); var config = Configurations.GetOrThrow(pr); switch (config.Mode) { case BigStringMode.Database: break; case BigStringMode.File: bs.Text = mixin.File == null ? null : Encoding.UTF8.GetString(mixin.File.GetByteArray()); break; case BigStringMode.Migrating_FromDatabase_ToFile: if (mixin.File != null) { bs.Text = Encoding.UTF8.GetString(mixin.File.GetByteArray()); } break; case BigStringMode.Migrating_FromFile_ToDatabase: if (bs.Text == null && mixin.File != null) { bs.Text = Encoding.UTF8.GetString(mixin.File.GetByteArray()); } break; default: break; } }
public static void PreSaving(BigStringMixin mixin, PreSavingContext ctx) { var bs = (BigStringEmbedded)mixin.MainEntity; PropertyRoute pr = FindPropertyRoute(bs); var config = Configurations.GetOrThrow(pr); switch (config.Mode) { case BigStringMode.Database: break; case BigStringMode.File: if (bs.Modified == ModifiedState.SelfModified) { mixin.File = string.IsNullOrEmpty(bs.Text) ? null : new FilePathEmbedded(config.FileTypeSymbol !, pr.PropertyInfo !.Name + ".txt", Encoding.UTF8.GetBytes(bs.Text)); ctx.InvalidateGraph(); } break; case BigStringMode.Migrating_FromDatabase_ToFile: if (bs.Modified == ModifiedState.SelfModified || bs.Text.HasText() && mixin.File == null) { mixin.File = string.IsNullOrEmpty(bs.Text) ? null : new FilePathEmbedded(config.FileTypeSymbol !, pr.PropertyInfo !.Name + ".txt", Encoding.UTF8.GetBytes(bs.Text)); ctx.InvalidateGraph(); } break; case BigStringMode.Migrating_FromFile_ToDatabase: if (bs.Modified == ModifiedState.SelfModified || string.IsNullOrEmpty(bs.Text) && mixin.File != null) { bs.Text = mixin.File == null ? null : Encoding.UTF8.GetString(mixin.File.GetByteArray()); ctx.InvalidateGraph(); mixin.File?.DeleteFileOnCommit(); } break; default: break; } }