Entity Framework Crée de Nouvelles / Double Entrées pour les Objets Associés
Je suis en train d'utiliser le Premier Code pour créer un SQL CE 4 de la base de données. Lors de l'exécution de l'exemple de code ci-dessous, Entity Framework est l'insertion de nouveaux enregistrements de produit à chaque fois, même si les données sont exactement les mêmes. Que dois-je faire pour Entity Framework ne pas créer des doublons de produits associés? Les valeurs dans la ForeignID1 et de l'objet Produit, sont des valeurs qui existent déjà dans la base de données, mais Entity Framework est en train d'effacer l'ID, je lui donne et l'ajout d'un nouvel ID.
namespace MyApp.Model
{
public class MyThing
{
public int ID { get; set; }
[ForeignKey("Product")]
public int ForeignID1{ get; set; }
public virtual Product Product { get; set; }
}
}
//Data.DataManager.cs
public class DataManager : DbContext
{
public DbSet<Model.MyThing> Things{ get; set; }
public DbSet<Model.Product> Products { get; set; }
}
Ce sont ces valeurs qu'il a introduites. Il ne devrait être qu'une valeur dans la table référencée par plusieurs MyThings
's
OriginalL'auteur teynon | 2013-12-20
Vous devez vous connecter pour publier un commentaire.
Afin d'éviter la duplication, vous devez joindre l'entité liée au contexte:
Ou...
...fonctionnera aussi bien si vous avez défini
myThing.ForeignID1
à un ID de Produit.J'ai fini par utiliser une combinaison de cela et
[DatabaseGenerated(DatabaseGeneratedOption.None)]
pour désactiver la colonne d'identité. J'ai également fait mon propre processus de mise à jour pour chaque enfant (de Produit).Il est également important de noter à utiliser Attach() AVANT de modifier les propriétés de l'objet que vous souhaitez ajouter à la DB.... Peut-être que j'étais juste stupide...
OriginalL'auteur Slauma