Stor advarsel:IKKE TESTET - tænker bare højt.
EF understøtter tilsidesættelse af SaveChanges
, så måske er en mulighed at definere en grænseflade såsom:
interface IVersionedRow {
int RowVersion {get;set;}
}
og tilføje en int RowVersion
egenskab/felt til både din(e) modelklasse(r) og databasetabellen(erne), og brug partial class
at implementere denne grænseflade (ved at bruge implicit grænsefladeimplementering):
partial class Customer : IVersionedRow {}
partial class Order : IVersionedRow {}
...
Tilsidesæt derefter SaveChanges
, noget som:
public override int SaveChanges(SaveOptions options)
{
foreach (ObjectStateEntry entry in
ObjectStateManager.GetObjectStateEntries(EntityState.Modified))
{
var v = entry.Entity as IVersionedRow;
if(v != null) v.RowVersion++;
}
return base.SaveChanges(options);
}
der så skulle fungere (i teorien - utestet) som en manuelt implementeret rækkeversionstæller. Lad ændringsvalidering være aktiveret for RowVersion
, og det burde tjene.