c# - Entity framework: StoreGeneratedPattern="Computed" property -
i have datetime
property. need property's default value datetime.now
. , found out can specify attribute storegeneratedpattern="computed"
, set (getdate())
in sql. works successfully. can't change property in code. need change property datetime value. changes not saved.
setting property computed telling ef cannot set value directly. how you? property exists sake of computed columns, definition not saved database.
unfortunately, ef's "default value" property can set values known @ compile-time, , not datetime.now
this link provides decent workaround:
you can handle savingchanges
event on context, , add default values there, happens when call savechanges()
, not when object created.
partial void oncontextcreated() { this.savingchanges += new eventhandler(accrualtrackingentities_savingchanges); } void accrualtrackingentities_savingchanges(object sender, eventargs e) { list<invoice> invoices = this.objectstatemanager .getobjectstateentries(system.data.entitystate.added | system.data.entitystate.modified) .select(entry => entry.entity) .oftype<invoice>().tolist(); foreach(invoice in invoices) if (i.entitystate == system.data.entitystate.added) { //set default values } else { //?? whatever } }
Comments
Post a Comment