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
Post a Comment