entity framework 4 - Id's not updating when using EntityFramework code-first -


after earlier question i'm stil struggling ef code-first;

i have 3 (in example, in practice there more) 1 table uses multiple id's accessing other tables.

i have 2 problems

1: id's shipping , delivery aren't set (remain '0') when saving database. 2: when using dbmigrations index created twice recordid

.index(t => t.recordid), .index(t => t.recordid); 

code example:

record class:

public class record {     public record()     {         shipping = new shipping();         delivery = new delivery();     }      public int recordid { get; set; }     public int shippingid { get; set; }     public int deliveryid { get; set; }      public virtual shipping shipping { get; set; }     public virtual delivery delivery { get; set; } } 

shipping class:

public class shipping {     public int shippingid { get; set; }     public string shippingname { get; set; }      public virtual record record { get; set; } } 

delivery class:

public class delivery {     public int deliveryid { get; set; }     public string deliverytext { get; set; }      public virtual record record { get; set; } } 

context:

public class context : dbcontext {     public dbset<record> records { get; set; }     public dbset<shipping> shippings { get; set; }     public dbset<delivery> deliveries { get; set; }      protected override void onmodelcreating(dbmodelbuilder modelbuilder)     {          modelbuilder.entity<record>()             .hasrequired(m => m.shipping)             .withrequireddependent(x => x.record)             .willcascadeondelete(false);          modelbuilder.entity<record>()             .hasrequired(m => m.delivery)             .withrequireddependent(x => x.record)             .willcascadeondelete(false);          base.onmodelcreating(modelbuilder);     } 

main program (method):

using (context context = new context())       {             var model = context.records.create();             var shipping = model.shipping;             shipping.shippingname = "testcontext";             var delivery = model.delivery;             delivery.deliverytext = "customtext";             context.entry(model).state = entitystate.added;             context.savechanges();       } 

main program (second try)

using (context context = new context())       {                            var model = context.records.create();             model.shipping = context.shippings.create();             var shipping = model.shipping;             shipping.shippingname = "testcontext";             model.delivery = context.deliveries.create();             var delivery = model.delivery;             delivery.deliverytext = "customtext";             context.entry(model).state = entitystate.added;             context.savechanges();       } 

to avoid index, don't specify key fields in record class. default identity behaviour name key fields id

public class record {     public record()     {         shipping = new shipping();         delivery = new delivery();     }      public int id { get; set; }     public virtual shipping shipping { get; set; }     public virtual delivery delivery { get; set; } } 

Comments