c# - EF Multiple foreign keys only 1 required -
i have entity defines properties number of different entityies.
eg.
class user{ icollection<propertyentity> properties {get;set;} } class company{ icollection<propertyentity> properties {get;set;} }
when delete propertyentity either user or company.
myuser.properties.remove(someproperty);
the propertyentity isn't deleted, has it's foreign key set null.
i understand use [key] annotation define foreign key. presumably require both keys instead of either?
how ef structure relationship either user or company can have many propertyentitys. propertyentity deleted if doesn't have user or company?
if relationship optional there no way define relationship removing child navigation collection delete database.
you have either call dbset<t>.remove
child...
myuser.properties.remove(someproperty); if (!someproperty.companyid.hasvalue) context.propertyentities.remove(someproperty);
... (which automatically remove child collection) or can try delete "orphaned" children in overridden savechanges
before changes committed:
public override int savechanges() { propertyentities.local .where(p => !p.userid.hasvalue && !p.companyid.hasvalue) .tolist() .foreach(p => propertyentities.remove(p)); return base.savechanges(); }
this approach explained in more details on arthur vickers' blog.
setting identifying relationship (which support child deleted database when removed navigation collection) indeed possible if relationship required, it's not option you.
Comments
Post a Comment