1

我对 .NET 还很陌生,但是现在已经在这个项目上工作了一段时间,进展甚微,而且随着课程数量的增加,它变得有点不堪重负。

客观的:

  1. 从实体框架表生成数据(应该使用 LINQ)<- LINQ 似乎正在工作。

  2. 将数据转换为 XML <-根本不工作

  3. 如果不工作,则发送电子邮件<-这工作得很好,很奇怪,哈哈;)

谁能给我一个代码示例,您可以在其中通过 DataContract 连接到实体并序列化(如果这是最好的方法,可能使用泛型)到 XML Writer?根据这里的评论是我想要的一个样本。-- 所以我们还说,在这个模型中,我们想要加入“DIRTYMIKE”表,其中包括“男孩”作为一个对象,其名称将通过 xml 和 PRIUS 中的“CARS”表通过 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

1 回答 1

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());
}

只需创建某种类型的数据传输对象,或者直接将实体对象传递给此函数,您将获得有效的、可反序列化的 XML。

于 2013-04-03T19:49:45.810 回答