c# - How do I create two associated entities at one time with EF4 Code-First -
so have 2 entities, post , posthistory. whenever create or edit post, want create exact copy of posthistory log changes made post. post entity has following definition:
public class post { public int id { get; set; } public string text { get; set; } public virtual icollection<posthistory> posthistory{ get; set; } } the problem comes when create first post. example, if try this:
post post = new post { text = "blah" }; context.posts.add(post); posthistory history = new posthistory { text = "blah"}; context.posthistory.add(history); post.posthistory.add(history); that fail because since both post , history new entities, post.posthistory null due not having been initialized yet. way can see first commit post db, commit history database, don't see why performing 2 separate inserts should necessary this.
if have constructor initializes icollection list<t> works fine, forcing implementation list<t> causes other issues, , no code-first tutorials forced initiation.
so what's best way handle situation?
you can initialize list in client code itself:
post post = new post { text = "blah" posthistory = new list() { new posthistory { text = "blah" } } }; context.posts.add(post); context.savechanges(); however, there nothing wrong initializing collection inside constructor , recommended because saves having initialize in client codes.
Comments
Post a Comment