c# - EF 5 Code-First Seeding self referencing table -
here's code:
base class:
public class baseent { [key] public int id { get;set; } public datetime insertdate { get; set; } public int insertuserid { get; set; } public datetime updatedate { get; set; } public int updateuserid { get; set; } [timestamp] public byte[] timestamp { get; set; } public virtual user insertuser { get; set; } public virtual user updateuser { get; set; } }
user entity:
public class user:baseent { public string username { get; set; } public string fullname { get; set; } public virtual icollection<user> insertedusers { get; set; } public virtual icollection<user> updatedusers { get; set; } }
model creating:
protected override void onmodelcreating(dbmodelbuilder modelbuilder) { modelbuilder.entity<user>() .hasrequired(t => t.insertuser) .withmany(t=>t.insertedusers) .hasforeignkey(t => t.insertuserid).willcascadeondelete(false); modelbuilder.entity<user>() .hasrequired(t => t.updateuser) .withmany(t=>t.updatedusers) .hasforeignkey(t => t.updateuserid).willcascadeondelete(false); }
seed:
protected override void seed(mcfdatacontext context) { context.users.add(new entities.user {id=1,fullname="rusty boi ",username="jhaskdhaksdhk",insertuserid=1,updateuserid=1,updatedate=datetime.now,insertdate=datetime.now }); }
and here's error encountered in seed part:
{"unable determine valid ordering dependent operations. dependencies may exist due foreign key constraints, model requirements, or store-generated values."}
what have here sort of "chicken , egg" problem. possible solutions:
- make foreign keys
insertuserid
,updateuserid
nullable - do design change: maybe user table shouldn't have insertuserid, updateuserid. solved introducing base class doesn't have
insertuserid
,updateuserid
properties or similar
Comments
Post a Comment