代码之家  ›  专栏  ›  技术社区  ›  the_tr00per

NLog发出使用WCF C#.NET将对象写入数据库的问题

  •  3
  • the_tr00per  · 技术社区  · 6 年前

    我有一个正在写入数据库的请求XML对象,如果我按如下方式使用内置的“消息”对象,它将工作:

    NLog.Config文件

    <parameter name="@message" layout="${message}" />
    

    代码隐藏:

    logger.Debug("{@value1}", new { request1 = request});
    

    但如果我尝试将其写入另一个字段,例如:

    <parameter name="@Request" layout="${event-properties:value1}" />
    

    它不会将对象的值写入表,但是:

    “MyServices.Types.Request”

    请求类型为:

    namespace MyServices.Types
    {
        [DataContract]
        public class Request
        {
            [DataMember]
            public string MessageHeader { get; set; }
            [DataMember]
            public int EventType { get; set; }
            [DataMember]
            public string Identification { get; set; }
            [DataMember]
            public DateTime VisitDate { get; set; }
    
        }
    }
    

    这是有原因的吗?“消息”属性似乎工作正常

    1 回复  |  直到 6 年前
        1
  •  2
  •   Rolf Kristensen Raúl Diego    5 年前

    NLog 4.6允许您将XML呈现到数据库目标:

    <parameter name="@Request" DbType="SqlDbType.Xml">
       <layout type="xmllayout" includeAllProperties="true" />
    </parameter>
    

    NLog 4.6还允许您设置参数的DbType。见aslo https://github.com/NLog/NLog/wiki/XmlLayout

        2
  •  4
  •   Julian    4 年前

    (这是旧版NLog的答案。最新消息,见Rolf的回答)

    ToString

    目前只支持JSON序列化,不支持XML

    <parameter name="@Request" layout="${event-properties:value1:format=@}" />
    

    ${event-properties} docs 更多选项和示例