1

我是相當新的.NET,但一直在這個項目上的某個時候現在的進展甚微,並與類的量它變得有點勢不可擋。序列化爲XML作家

目的:

  1. 生成實體框架表(應該是使用LINQ)<數據 - LINQ似乎是工作。

  2. 翻譯數據轉換成XML < - 不是所有

  3. 電子郵件工作,如果不工作< - 這是工作得很好,奇怪的是笑;)

誰能給我一個例子代碼連接到實體和序列化(可能使用泛型,如果這是最好的方式)通過DataContract到XML編寫器?根據評論,這裏是我要去的一個樣本。 - 所以我們還要說,在這個模型中,我們想要加入包含「The Boys」的「DIRTYMIKE」表作爲一個名字的對象,通過xml和PRIUS中的「CARS」表提取id by id顯然這是一個理論的一組實體,但希望它給別人一笑道:)

這裏的一些理論課我剛剛颳起了 - 希望這解釋了更多的目標是什麼:

public class TheOtherGuys 
{ 
    private static ILog log; 
    private string theBoysWrapper; 
    private int rowsRead = 0; 
    private int outputRecords = 0; 
    private bool warnings = false; 
    private bool fatal = false; 
    private bool fatalMsg = false; 
    /// <summary> 
    /// Next wrap the xml with a Document Wrapper and Element Wrapper 
    /// </summary> 
    public TheOtherGuys(ILog log) 
    { 

     XmlDocument doc = new XmlDocument(); 
     XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", null, null); 
     doc.AppendChild(dec);//creates root 
     XmlElement root = doc.CreateElement("DIRTYMIKE"); 
     doc.AppendChild(root); 
     XmlElement nextElem = doc.CreateElement("THEBOYS"); 
     log = LogManager.GetLogger(this.GetType()); 
     if (log.IsDebugEnabled == true) 
     { 
      log.Debug(GetType().Name + ".Constructor(): enter"); 
     } 
     //creates new xml Document and set up declaration and root 

     if (log.IsDebugEnabled == true) 
     { 
      log.Debug(GetType().Name + ".Constructor(): exit"); 
     } 
    } 
    //Read data from DIRTY_MIKE_AND_THE_BOYS and CAR Tables 
    //Translate the results into xml 
    private void process(DateTime process) { 

     XmlDocument doc = new XmlDocument(); 
     XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", null, null); 
     doc.AppendChild(dec);//creates root 
     XmlElement root = doc.CreateElement("OTHERGUYS");//maybe a conditional statement to   change the root to 'OTHERGUYS' 
     doc.AppendChild(root); 
     XmlElement nextElem = doc.CreateElement("CAR"); 
     doc.AppendChild(nextElem); 

     if (log.IsDebugEnabled == true) 
     { 
      log.Debug(GetType().Name + ".process(): enter - prius=" + process); 
     } 
     StringBuilder sb = new StringBuilder(); 
     sb.Append(" select "); 
     sb.Append("  'PRIUS' CAR, "); // 1 
     sb.Append("  'PJM' MKT_CD, ");  // 2 
     sb.Append("  decode(to_char(lh.time_id-1/24, 'HH24'), '00', "); 
     sb.Append("   to_char(lh.time_id-1, 'YYYYMMDD'), to_char(lh.time_id-1/24, 'YYYYMMDD')) START_DT, "); // 3 
     sb.Append("  decode(to_char(lh.time_id-1/24, 'HH24'), '00', "); 
     sb.Append("   '240000', to_char(lh.time_id-1/24, 'HH24MISS')) START_TIME, "); //4 
     sb.Append("  decode(to_char(lh.time_id, 'HH24'), '00', "); 
     sb.Append("   to_char(lh.time_id-1, 'YYYYMMDD'), to_char(lh.time_id, 'YYYYMMDD')) END_DT, "); // 5 
     sb.Append("  decode(to_char(lh.time_id, 'HH24'), '00', "); 
     sb.Append("   '240000', to_char(lh.time_id, 'HH24MISS')) END_TIME,  "); // 6 
     sb.Append("  cars._car_id   TX_PT,  "); //8 
     sb.Append("  lh.data_value TARGET_FD "); // 12 
     sb.Append("from DATABASE.MYTABLE lh,   "); 
     sb.Append("  DATABASE.CAR car_id       "); 
     sb.Append("where lh.car_id = unit.car_id   "); 
     sb.Append("AND lh.time_id > to_date(?, 'MM/DD/YYYY') "); 
     sb.Append("AND lh.time_id <= to_date(?, 'MM/DD/YYYY') + 1 "); 
     sb.Append("AND lh.atb_data_category = 69 AND lh.data_value <> 0  "); 
     sb.Append(" order by "); 
     sb.Append("  lh.time_id, lh.car_id "); 

     sb.ToString();// or something like that 
     myDataLayer.theOtherGuysEntitie nme = new myDataLayer.theOtherGuysEntities(myConnection.getEntityFrameworkConnection(typeof(myDataLayer.theOtherGuysEntities))); 
     if (log.IsDebugEnabled == true) 
     { 
      log.Debug(GetType().Name + ".process(): odb" + odb); 
      try 
      { 
       DateTime dt = DateTime.ParseExact(processingDate.ToString(), "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 
       string s = dt.ToString("dd/M/yyyy"); 



      }catch(Exception e) { 
       fatal=true; 
       fatalMsg = true; 
       if(log.IsFatalEnabled==true) { 
        log.Fatal(GetType().Name + ".process(): exception", e); 
       } 
       Console.Error.WriteLine("The OtherGuys Failed Dirty Mike is in the Prius with name{}, name{1}, name{2}, name {3}."); 
    //Really I am supposed to use LINQ for the querying 
    // and then conditionalstatementsthrough my business logic to handle the decoding 

再次感謝!

回答

4
public static string ToXmlUsingDataContract<T>(T obj) 
{ 
    var dcs = new DataContractSerializer(typeof(T)); 
    var sb = new StringBuilder(); 

    using (var writer = XmlWriter.Create(sb)) 
    { 
     dcs.WriteObject(writer, obj); 
    } 

    return (sb.ToString()); 
} 

只是建立某種形式的數據傳輸對象,或者乾脆直接傳遞實體對象這個功能,你會得到有效的,deserializable XML。