J'essaie d'utiliser l'infrastructure d'entité pour prendre des données (relations imbriquées) à partir d'une BD et l'insérer dans une autre. L'idée est de télécharger les données sous forme de fichier XML, puis de les télécharger et de les insérer dans le nouveau BD.Copie de données dans des bases de données avec Entity Framework
Le téléchargement de XML est simple:
var BoroughQuery = from b in Context.Borough.Include("User").Include("Location").Include("Contact").Include("Location.LocationContact") where b.Id == BoroughId select b;
BoroughModel = BoroughQuery.First();
Context.Detach(BoroughModel);
System.Runtime.Serialization.DataContractSerializer ser = new System.Runtime.Serialization.DataContractSerializer(typeof(Borough));
System.IO.DirectoryInfo TempDirectory = new System.IO.DirectoryInfo(Server.MapPath(Request.ApplicationPath + "Temp"));
if (!TempDirectory.Exists) TempDirectory.Create();
System.IO.FileInfo TempFile = new System.IO.FileInfo(TempDirectory.FullName + "\\" + BoroughModel.Key + "_" + System.DateTime.UtcNow.ToString("yyyyMMddhhmmss") + ".xml");
FileStream writer = new FileStream(TempFile.FullName, FileMode.Create);
ser.WriteObject(writer, BoroughModel);
writer.Close();
Le problème ..est fixation qui lisent XML à un autre contexte et la sauvegarde à la DB
Jusqu'à présent, je donne les résultats suivants qui lit dans le modèle de XML très bien, mais il n'y a rien à ajouter à la db:
DataContractSerializer ser = new DataContractSerializer(typeof(Borough));
Borough deserializedBorough = (Borough)ser.ReadObject(fleBoroughUpload.FileContent);
using (Entities Context = new Entities("name=EntitiesTarget"))
{
Context.Attach(deserializedBorough);
Context.SaveChanges();
}
Toute aide serait grandement apprécié.
NOTE Parce que ces deux blocs de données sont sur le même serveur les données et ne pas descendre en XML, mais j'imagine que le problème serait toujours le même.