c# - Why relationship that were set with Fluent API are being lost after restarting app? -


i have 2 classes:

class owner {     [key]     public int ownerid { get; set; }      [required]     public string name { get; set; }      public virtual icollection<car> cars { get; set; }      public owner()     {         cars = new list<car>();     } }  class car {     [key]     public int carid { get; set; }      [required]     public string model { get; set; }      public virtual icollection<owner> owners { get; set; }      public car()     {         owners = new list<owner>();     } } 

i setting many many relationship in database context using fluent api:

class carslistdatacontext : dbcontext {     public dbset<owner> owners { get; set; }      public dbset<car> cars { get; set; }      public carslistdatacontext() : base("name=carslistconnectionstring")     {      }      protected override void onmodelcreating(dbmodelbuilder modelbuilder)     {         modelbuilder.entity<car>()                     .hasmany(car => car.owners)                     .withmany(owner => owner.cars);     } } 

and run code:

    static void main(string[] args)     {         var dbcontext = new carslistdatacontext();          var owner = new owner()         {             name = "john smith"         };          var car = new car()         {             model = "volkswagen beetle"         };          owner.cars.add(car);         car.owners.add(owner);          dbcontext.owners.add(owner);         dbcontext.cars.add(car);         dbcontext.savechanges();          foreach (var o in dbcontext.owners)         {             string cars = string.empty;             foreach (var c in o.cars)             {                 cars += c.model;             }             console.writeline(o.name + ": " + cars);         }          foreach (var c in dbcontext.cars)         {             string owners = string.empty;             foreach (var o in c.owners)             {                 owners += o.name;             }             console.writeline(c.model + ": " + owners);         }          console.readkey();     } 

everything ok, entity framework creates new database , app's output looks like:

john smith: volkswagen beetle volkswagen beetle: john smith 

then remove lines add new values database:

static void main(string[] args) {     var dbcontext = new carslistdatacontext();      dbcontext.savechanges();      foreach (var o in dbcontext.owners)     {          string cars = string.empty;          foreach (var c in o.cars)          {               cars += c.model;          }          console.writeline(o.name + ": " + cars);      }       foreach (var c in dbcontext.cars)      {          string owners = string.empty;          foreach (var o in c.owners)          {              owners += o.name;          }          console.writeline(c.model + ": " + owners);       }        console.readkey(); } 

if run code, get:

john smith: volkswagen beetle: 

so why relationship between owners , cars being lost? using sql server 2012 localdb, if matters.


Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -