Asp.net mvc 3 实体框架代码优先-备份和恢复DbContext

Asp.net mvc 3 实体框架代码优先-备份和恢复DbContext,asp.net-mvc-3,ef-code-first,Asp.net Mvc 3,Ef Code First,我试图备份模型更改时的数据,并在创建数据库后重新创建它。 它的工作很好,但我需要为每节课写这个。 如何获取DbContext中的所有DbSet并在其上循环这些函数 备份: XmlSerializer classSerializer = new XmlSerializer(typeof(List<TextComponent>)); StreamWriter classComponentWriter = new StreamWriter(Server.MapPath("~/App_Dat

我试图备份模型更改时的数据,并在创建数据库后重新创建它。 它的工作很好,但我需要为每节课写这个。 如何获取DbContext中的所有DbSet并在其上循环这些函数

备份:

XmlSerializer classSerializer = new XmlSerializer(typeof(List<TextComponent>));
StreamWriter classComponentWriter = new StreamWriter(Server.MapPath("~/App_Data/backup/TextComponents.xml"));
classSerializer.Serialize(classComponentWriter, _db.TextComponents.ToList());
classComponentWriter.Close();
List<TextComponent> TextComponents = null;
XmlSerializer TextComponentSerializer = new XmlSerializer(typeof(List<TextComponent>));
FileStream TextComponentFileStream = new FileStream(Server.MapPath("~/App_Data/backup//TextComponents.xml"), FileMode.Open);
TextComponents = (List<TextComponent>)TextComponentSerializer.Deserialize(TextComponentFileStream);

foreach (TextComponent item in TextComponents)
{
_db.TextComponents.Add(item);
}
_db.SaveChanges();
XmlSerializer classSerializer=新的XmlSerializer(typeof(List));
StreamWriter classComponentWriter=新的StreamWriter(Server.MapPath(“~/App\u Data/backup/TextComponents.xml”);
序列化(classComponentWriter,_db.TextComponents.ToList());
classComponentWriter.Close();
恢复:

XmlSerializer classSerializer = new XmlSerializer(typeof(List<TextComponent>));
StreamWriter classComponentWriter = new StreamWriter(Server.MapPath("~/App_Data/backup/TextComponents.xml"));
classSerializer.Serialize(classComponentWriter, _db.TextComponents.ToList());
classComponentWriter.Close();
List<TextComponent> TextComponents = null;
XmlSerializer TextComponentSerializer = new XmlSerializer(typeof(List<TextComponent>));
FileStream TextComponentFileStream = new FileStream(Server.MapPath("~/App_Data/backup//TextComponents.xml"), FileMode.Open);
TextComponents = (List<TextComponent>)TextComponentSerializer.Deserialize(TextComponentFileStream);

foreach (TextComponent item in TextComponents)
{
_db.TextComponents.Add(item);
}
_db.SaveChanges();
List TextComponents=null;
XmlSerializer TextComponentSerializer=新的XmlSerializer(typeof(List));
FileStream TextComponentFileStream=新文件流(Server.MapPath(“~/App\u Data/backup//TextComponents.xml”)、FileMode.Open);
TextComponents=(列表)TextComponentSerializer.Deserialize(TextComponentFileStream);
foreach(TextComponents中的TextComponent项)
{
_db.TextComponents.Add(项);
}
_db.SaveChanges();

您可以使用反射枚举所有数据库集属性:

properties = typeof(DBContext).GetProperties(); // or this.GetType().GetProperties();

foreach (PropertyInfo property in properties)  
{  
    if (/*Check if property type is DBSet by comparing [property.DeclaringType](http://msdn.microsoft.com/en-us/library/system.type.declaringtype.aspx)*/)  
        // Write backup or restore code here.  
}  
`