A ChangeSource property can be added and populated on your change entities, to store where change occured from.
- Implement the
IHasChangeSource<TChangeSource>interface on your change entity (ChangeSource is an enum in this example):public class UserChange : IChange<User>, IHasChangeSource<ChangeSource> { ... - Create a
ChangeSourceProviderby inheriting theChangeSourceProvider<TChangeSource>class and overriding the required method(s):public class MyChangeSourceProvider : ChangeSourceProvider<ChangeSource> { public override <ChangeSourceType> GetChangeSourceAsync() { return Task.FromResult(ChangeSource.ConsoleApp); } } - Add the
UseChangeSource<TChangeSourceProvider, TChangeSource>()option to your DbContextOptions, specifying yourChangeSourceProviderand ChangeSource type:services.AddDbContext<MyDbContext>(options => { options .UseSqlServerChangeTriggers(options => { options.UseChangeSource<MyChangeSourceProvider, ChangeSource>() }); } - Create a migration if required:
dotnet ef migrations add ChangeSource