document.write('<link rel="stylesheet" href="http://gist.github.com/stylesheets/gist/embed.css"/>')





document.write('<div id=\"gist-113147\" class=\"gist\">\n  \n  \n    \n            \n\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n          \n          \n          \n            <div class=\"gist-highlight\"><pre><div class=\"line\" id=\"LC1\"><span class=\"k\">namespace<\/span> <span class=\"nn\">System.Data.Services.Client<\/span><\/div><div class=\"line\" id=\"LC2\"><span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC3\">&nbsp;<span class=\"k\">using<\/span> <span class=\"nn\">System.Data.Services.Common<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC4\">&nbsp;<span class=\"k\">public<\/span> <span class=\"k\">partial<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">MyContextClassName<\/span><\/div><div class=\"line\" id=\"LC5\">&nbsp;<span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC6\">&nbsp;&nbsp;<span class=\"k\">public<\/span> <span class=\"nf\">MyContextClassName<\/span><span class=\"p\">(<\/span><span class=\"n\">Uri<\/span> <span class=\"n\">dataServiceUri<\/span><span class=\"p\">,<\/span><span class=\"kt\">bool<\/span> <span class=\"n\">enableIgnoreProperties<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC7\">&nbsp;&nbsp;&nbsp;<span class=\"p\">:<\/span> <span class=\"k\">this<\/span><span class=\"p\">(<\/span><span class=\"n\">dataServiceUri<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC8\">&nbsp;&nbsp;<span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC9\">&nbsp;&nbsp;&nbsp;<span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"n\">WritingEntity<\/span> <span class=\"p\">+=<\/span> <span class=\"k\">new<\/span> <span class=\"n\">EventHandler<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">ReadingWritingEntityEventArgs<\/span><span class=\"p\">&gt;(<\/span><span class=\"n\">DataServiceContextEx_WritingEntity<\/span><span class=\"p\">);<\/span><\/div><div class=\"line\" id=\"LC10\">&nbsp;&nbsp;<span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC11\">&nbsp;<\/div><div class=\"line\" id=\"LC12\">&nbsp;&nbsp;<span class=\"k\">void<\/span> <span class=\"nf\">DataServiceContextEx_WritingEntity<\/span><span class=\"p\">(<\/span><span class=\"kt\">object<\/span> <span class=\"n\">sender<\/span><span class=\"p\">,<\/span> <span class=\"n\">ReadingWritingEntityEventArgs<\/span> <span class=\"n\">e<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC13\">&nbsp;&nbsp;<span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC14\">&nbsp;&nbsp;&nbsp;<span class=\"c1\">// e.Data gives you the XElement for the Serialization of the Entity <\/span><\/div><div class=\"line\" id=\"LC15\">&nbsp;&nbsp;&nbsp;<span class=\"c1\">//Using XLinq  , you can  add/Remove properties to the element Payload  <\/span><\/div><div class=\"line\" id=\"LC16\">&nbsp;&nbsp;&nbsp;<span class=\"n\">XName<\/span> <span class=\"n\">xnEntityProperties<\/span> <span class=\"p\">=<\/span> <span class=\"n\">XName<\/span><span class=\"p\">.<\/span><span class=\"n\">Get<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;properties&quot;<\/span><span class=\"p\">,<\/span> <span class=\"n\">e<\/span><span class=\"p\">.<\/span><span class=\"n\">Data<\/span><span class=\"p\">.<\/span><span class=\"n\">GetNamespaceOfPrefix<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;m&quot;<\/span><span class=\"p\">).<\/span><span class=\"n\">NamespaceName<\/span><span class=\"p\">);<\/span><\/div><div class=\"line\" id=\"LC17\">&nbsp;&nbsp;&nbsp;<span class=\"n\">XElement<\/span> <span class=\"n\">xePayload<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span><span class=\"p\">;<\/span><\/div><div class=\"line\" id=\"LC18\">&nbsp;&nbsp;&nbsp;<span class=\"k\">foreach<\/span> <span class=\"p\">(<\/span><span class=\"n\">PropertyInfo<\/span> <span class=\"n\">property<\/span> <span class=\"k\">in<\/span> <span class=\"n\">e<\/span><span class=\"p\">.<\/span><span class=\"n\">Entity<\/span><span class=\"p\">.<\/span><span class=\"n\">GetType<\/span><span class=\"p\">().<\/span><span class=\"n\">GetProperties<\/span><span class=\"p\">())<\/span><\/div><div class=\"line\" id=\"LC19\">&nbsp;&nbsp;&nbsp;<span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC20\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"kt\">object<\/span><span class=\"p\">[]<\/span> <span class=\"n\">doNotSerializeAttributes<\/span> <span class=\"p\">=<\/span> <span class=\"n\">property<\/span><span class=\"p\">.<\/span><span class=\"n\">GetCustomAttributes<\/span><span class=\"p\">(<\/span><span class=\"k\">typeof<\/span><span class=\"p\">(<\/span><span class=\"n\">DoNotSerializeAttribute<\/span><span class=\"p\">),<\/span> <span class=\"k\">false<\/span><span class=\"p\">);<\/span><\/div><div class=\"line\" id=\"LC21\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">doNotSerializeAttributes<\/span><span class=\"p\">.<\/span><span class=\"n\">Length<\/span> <span class=\"p\">&gt;<\/span> <span class=\"m\">0<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC22\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC23\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">xePayload<\/span> <span class=\"p\">==<\/span> <span class=\"k\">null<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC24\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC25\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">xePayload<\/span> <span class=\"p\">=<\/span> <span class=\"n\">e<\/span><span class=\"p\">.<\/span><span class=\"n\">Data<\/span><span class=\"p\">.<\/span><span class=\"n\">Descendants<\/span><span class=\"p\">().<\/span><span class=\"n\">Where<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">XElement<\/span><span class=\"p\">&gt;(<\/span><span class=\"n\">xe<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">xe<\/span><span class=\"p\">.<\/span><span class=\"n\">Name<\/span> <span class=\"p\">==<\/span> <span class=\"n\">xnEntityProperties<\/span><span class=\"p\">).<\/span><span class=\"n\">First<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">XElement<\/span><span class=\"p\">&gt;();<\/span><\/div><div class=\"line\" id=\"LC26\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC27\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c1\">//The XName of the property we are going to remove from the payload<\/span><\/div><div class=\"line\" id=\"LC28\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">XName<\/span> <span class=\"n\">xnProperty<\/span> <span class=\"p\">=<\/span> <span class=\"n\">XName<\/span><span class=\"p\">.<\/span><span class=\"n\">Get<\/span><span class=\"p\">(<\/span><span class=\"n\">property<\/span><span class=\"p\">.<\/span><span class=\"n\">Name<\/span><span class=\"p\">,<\/span> <span class=\"n\">e<\/span><span class=\"p\">.<\/span><span class=\"n\">Data<\/span><span class=\"p\">.<\/span><span class=\"n\">GetNamespaceOfPrefix<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;d&quot;<\/span><span class=\"p\">).<\/span><span class=\"n\">NamespaceName<\/span><span class=\"p\">);<\/span><\/div><div class=\"line\" id=\"LC29\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c1\">//Get the Property of the entity  you don&#39;t want sent to the server<\/span><\/div><div class=\"line\" id=\"LC30\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">XElement<\/span> <span class=\"n\">xeRemoveThisProperty<\/span> <span class=\"p\">=<\/span> <span class=\"n\">xePayload<\/span><\/div><div class=\"line\" id=\"LC31\">					<span class=\"p\">.<\/span><span class=\"n\">Descendants<\/span><span class=\"p\">()<\/span><\/div><div class=\"line\" id=\"LC32\">					<span class=\"p\">.<\/span><span class=\"n\">Where<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">XElement<\/span><span class=\"p\">&gt;(<\/span><span class=\"n\">xe<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">xe<\/span><span class=\"p\">.<\/span><span class=\"n\">Name<\/span> <span class=\"p\">==<\/span> <span class=\"n\">xnProperty<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC33\">					<span class=\"p\">.<\/span><span class=\"n\">First<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">XElement<\/span><span class=\"p\">&gt;();<\/span><\/div><div class=\"line\" id=\"LC34\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c1\">//Remove this property from the Payload sent to the server <\/span><\/div><div class=\"line\" id=\"LC35\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">xeRemoveThisProperty<\/span><span class=\"p\">.<\/span><span class=\"n\">Remove<\/span><span class=\"p\">();<\/span><\/div><div class=\"line\" id=\"LC36\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC37\">&nbsp;&nbsp;&nbsp;<span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC38\">&nbsp;&nbsp;<span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC39\">&nbsp;<span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC40\">&nbsp;<\/div><div class=\"line\" id=\"LC41\"><span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC42\"><span class=\"k\">namespace<\/span> <span class=\"nn\">System.Data.Services.Common<\/span><\/div><div class=\"line\" id=\"LC43\"><span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC44\">&nbsp;<span class=\"c1\">/// &lt;summary&gt;<\/span><\/div><div class=\"line\" id=\"LC45\">&nbsp;<span class=\"c1\">/// Properties marked with this Attribute are not serialized in the payload when sent to the server<\/span><\/div><div class=\"line\" id=\"LC46\">&nbsp;<span class=\"c1\">/// &lt;/summary&gt;<\/span><\/div><div class=\"line\" id=\"LC47\"><span class=\"na\"> [AttributeUsage(AttributeTargets.Property)]<\/span><\/div><div class=\"line\" id=\"LC48\">&nbsp;<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">DoNotSerializeAttribute<\/span> <span class=\"p\">:<\/span> <span class=\"n\">Attribute<\/span><\/div><div class=\"line\" id=\"LC49\">&nbsp;<span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC50\">&nbsp;<span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC51\"><span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC52\">&nbsp;<\/div><div class=\"line\" id=\"LC53\"><span class=\"c1\">//Sample Usage<\/span><\/div><div class=\"line\" id=\"LC54\">&nbsp;<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">TestType<\/span><\/div><div class=\"line\" id=\"LC55\">&nbsp;<span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC56\">&nbsp;&nbsp;<span class=\"k\">public<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">ID<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC57\">&nbsp;&nbsp;<span class=\"c1\">/// &lt;summary&gt;<\/span><\/div><div class=\"line\" id=\"LC58\">&nbsp;&nbsp;<span class=\"c1\">/// This Property is client-only , should not be sent to the server<\/span><\/div><div class=\"line\" id=\"LC59\">&nbsp;&nbsp;<span class=\"c1\">/// &lt;/summary&gt;<\/span><\/div><div class=\"line\" id=\"LC60\"><span class=\"na\">  [DoNotSerialize]<\/span><\/div><div class=\"line\" id=\"LC61\">&nbsp;&nbsp;<span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">ClientOnlyProperty<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC62\">&nbsp;<span class=\"p\">}<\/span><\/div><\/pre><\/div>\n          \n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"http://gist.github.com/raw/113147/fb227bab4420bb4cf8539c3fd02d0c35f9a6cd95/gistfile1.cs\" style=\"float:right;\">view raw<\/a>\n          <a href=\"http://gist.github.com/113147#file_gistfile1.cs\" style=\"float:right;margin-right:10px;color:#666\">gistfile1.cs<\/a>\n          <a href=\"http://gist.github.com/113147\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n    \n  \n<\/div>\n')
