public override void GetData(object inObject, Stream outStream) { try { // DbSet<T> -> DataSet に変換 var items = inObject as IEnumerable; var converter = new IEnumerableToDataSetConverter(); var ds = converter.Convert(items); // シリアライズして渡す var xmlString = string.Empty; using (var writer = new StringWriter()) { ds.WriteXml(writer, XmlWriteMode.WriteSchema); xmlString = writer.ToString(); } var writer2 = new StreamWriter(outStream); writer2.Write(xmlString); writer2.Flush(); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } }
public override void GetData(object inObject, Stream outStream) { // DbContext -> DataSet に変換 var t = inObject.GetType(); // DbContext クラスに登録した各DBテーブルメンバー(DbSet<TableClass>)を取得(=その他管理系のメンバーは除外) // DbSet<> は IEnumerable を継承している var members = t.GetProperties() .Where(x => typeof(IEnumerable).IsAssignableFrom(x.PropertyType)) .Select(x => new { Name = x.Name, Items = x.GetValue(inObject, null) as IEnumerable }); var converter = new IEnumerableToDataSetConverter(); var ds = new DataSet(t.Name); foreach (var member in members) { var table = converter.ToDataTable(member.Items); table.TableName = member.Name; ds.Tables.Add(table); } // シリアライズして渡す var xmlString = string.Empty; using (var writer = new StringWriter()) { ds.WriteXml(writer, XmlWriteMode.WriteSchema); xmlString = writer.ToString(); } var writer2 = new StreamWriter(outStream); writer2.Write(xmlString); writer2.Flush(); }
public override void GetData(object inObject, Stream outStream) { // DbSet -> DataSet に変換 var items = inObject as IEnumerable; var converter = new IEnumerableToDataSetConverter(); var ds = converter.Convert(items); // シリアライズして渡す var xmlString = string.Empty; using (var writer = new StringWriter()) { ds.WriteXml(writer, XmlWriteMode.WriteSchema); xmlString = writer.ToString(); } var writer2 = new StreamWriter(outStream); writer2.Write(xmlString); writer2.Flush(); }