2010-04-13 3 views
0

Je dois à des entités: Société et emplacement (un à plusieurs). Lorsque je crée un nouvel objet entité Location et que vous affectez la propriété de navigation (Société) à la propriété de navigation de l'objet Emplacement déjà existant (Location _new = new Location(); _new.Company = _old.Company). Il semble qu'à ce stade, l'objet nouvellement créé est automatiquement ajouté au contexte de l'objet, car lorsque j'appelle la méthode SaveChanges, cet objet est inséré dans la base de données bien que je n'ai pas appelé ObjectContext.AddObject (_new). Je suis nouveau dans EF donc il y a probablement une raison pour laquelle j'ai des résultats comme ça? Est-il nécessaire d'assigner aussi CompanyReference classé aussi et comment le faire afin de bloquer ce comportement? Je veux explicitement ajouter un nouvel objet moi-même.Pourquoi l'objet entité nouvellement créé avec la propriété de navigation est automatiquement ajouté à ObjectContext?

IDaoFactory daoFactory = new DaoFactory();
ILocationDao locaitonDao = daoFactory.GetLocationDao();
IEnumerable<Location> locations = locaitonDao.GetLocations();
Location _old = locations.First();
Location _new = new Location();
_new.LocationName = _old.LocationName;
_new.Company = _old.Company;// 1
_new.Address = _old.Address;
//...
ContactEntities.SaveChanges();//2

Si j'exécute la ligne (1) instantanément objet _NEW est ajouté à l'objet contexte et je peux voir datarow supplémentaire dans mon DataGrid, après la ligne (2) est exécutée.

Répondre

0

C'est OK.
"Clever" Entity Framework découvre que vous avez attaché un nouvel objet à un objet déjà disponible dans ObjectStateManager et y ajoute l'objet nouvellement attaché avec l'état Added, donc il est ajouté à l'appel SaveChanges().

+0

Mais comme je l'ai dit je ne le veux pas. J'ai ajouté une nouvelle propriété à l'entité Locaiton appelée Reliée à une société pour garder une référence à une société spécifique jusqu'à ce que je décide d'enregistrer l'objet lorsque je vais l'assigner à la propriété de navigation. Cela fonctionne, mais je ne sais pas comment ça va? – Levelbit

Questions connexes