c# - Get with Foreign Keys not Returning data properly -


i trying select rows contact table , return them in wepapi method data not coming properly. can see rows in collection don't deserialize properly. can see why don't know how correct it.

here table structure.

enter image description here

here results of var contacts = db.contacts.asenumerable();

enter image description here

but json deserializes incorrectly causing second contact null. enter image description here

the second contact nested inside first contacts contact type. problem lies don't know why it's happening or how correct it.

enter image description here

i'm using jsonnetserialization conversions

edit posting json code sections:

public class jsonnetserialization : iserialization {     public string serialize<t>(object o)     {         return jsonconvert.serializeobject((t)o);     }      public object deserialize<t>(stream stream)     {         return jsonconvert.deserializeobject<t>(new streamreader(stream).readtoend());     } }   public class baserepository {     protected iserialization _serializer;     protected object deserialize<t>(stream stream)     {         var retval = _serializer.deserialize<t>(stream);         return retval;     }      protected string serialize<t>(t value)     {         var retval = _serializer.serialize<t>(value);         return retval;     } }  public structuremapregistry() {     for<iserialization>().use<jsonnetserialization>(); } 

ef generated contact entity:

namespace extranetdb {     [edmentitytypeattribute(namespacename="extranetmodel", name="contact")]     [serializable()]     [datacontractattribute(isreference=true)]     public partial class contact : entityobject     {         [edmscalarpropertyattribute(entitykeyproperty=true, isnullable=false)]         [datamemberattribute()]         public global::system.int32 contactid         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=false)]         [datamemberattribute()]         public global::system.int32 contacttypeid         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string firstname         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string lastname         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string middlename         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string namesuffix         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string address1         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string address2         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string city         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string stateabbrv         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string postalcode         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string homephonenumber         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string workphonenumber         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string mobilephonenumber         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string faxphonenumber         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string otherphonenumber         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string postalcodesuffix         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public nullable<global::system.datetime> birthdate         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public global::system.string email         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public nullable<global::system.int16> suppressletters         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public nullable<global::system.int32> languageid         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=false)]         [datamemberattribute()]         public global::system.datetime datecreated         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=false)]         [datamemberattribute()]         public global::system.datetime dateupdated         { }          [edmscalarpropertyattribute(entitykeyproperty=false, isnullable=true)]         [datamemberattribute()]         public nullable<global::system.int32> pid         { }          [xmlignoreattribute()]         [soapignoreattribute()]         [datamemberattribute()]         [edmrelationshipnavigationpropertyattribute("extranetmodel", "fk_contact_contacttype", "contacttype")]         public contacttype contacttype         { }          [browsableattribute(false)]         [datamemberattribute()]         public entityreference<contacttype> contacttypereference         { }          [xmlignoreattribute()]         [soapignoreattribute()]         [datamemberattribute()]         [edmrelationshipnavigationpropertyattribute("extranetmodel", "fk_contact_spokenlanguage", "spokenlanguage")]         public spokenlanguage spokenlanguage         { }          [browsableattribute(false)]         [datamemberattribute()]         public entityreference<spokenlanguage> spokenlanguagereference         { }     } } 

client side contact entity:

namespace prospectingplatformweb.models {     public class contact     {         [displayname("id")]         public int contactid { get; set; }          [displayname("contact type")]         public int32 contacttypeid { get; set; }          [displayname("first name")]         [required(errormessage = "please enter first name")]         [maxlength(50, errormessage = "limit 50 characters")]         public string firstname { get; set; }          [displayname("last name")]         [required(errormessage = "please enter last name")]         [maxlength(50, errormessage = "limit 50 characters")]         public string lastname { get; set; }          [displayname("middle name")]         public string middlename { get; set; }          [displayname("name suffix")]         public string namesuffix { get; set; }          [required(errormessage = "please enter address")]         [maxlength(60, errormessage = "limit 60 characters")]         [displayname("address 1")]         public string address1 { get; set; }          [displayname("address 2")]         public string address2 { get; set; }          [required(errormessage = "please enter city")]         [maxlength(50, errormessage = "limit 50 characters")]         [displayname("city")]         public string city { get; set; }          [required(errormessage = "please enter state")]         [maxlength(2, errormessage = "limit 2 characters")]         [displayname("state")]         public string stateabbrv { get; set; }          [required(errormessage = "please enter postal code")]         [maxlength(10, errormessage = "limit 10 numbers")]         [displayname("postal code")]         public string postalcode { get; set; }          [maxlength(15, errormessage = "limit 15 characters")]         [displayname("home phone")]         public string homephonenumber { get; set; }          [maxlength(15, errormessage = "limit 15 characters")]         [displayname("work phone")]         public string workphonenumber { get; set; }          [maxlength(15, errormessage = "limit 15 characters")]         [displayname("mobile phone")]         public string mobilephonenumber { get; set; }          [maxlength(15, errormessage = "limit 15 characters")]         [displayname("fax number")]         public string faxphonenumber { get; set; }          [maxlength(15, errormessage = "limit 15 characters")]         [displayname("other phone")]         public string otherphonenumber { get; set; }          [maxlength(4, errormessage = "limit 4 numbers")]         [displayname("postal code suffix")]         public string postalcodesuffix { get; set; }          [displayname("birth date")]         [displayformat(dataformatstring = "{0:dd/mm/yyyy}", applyformatineditmode = true)]         public datetime? birthdate { get; set; }          [displayname("email address")]         public string email { get; set; }          [displayname("suppress letters")]         public short? suppressletters { get; set; }          [displayname("language")]         public int? languageid { get; set; }          private datetime datecreated;          private datetime dateupdated;          [hiddeninput(displayvalue = true)]         public int? pid { get; set; }          public ienumerable<contacttype> contacttypes { get; set; }         public ienumerable<spokenlanguage> languages { get; set; }         public ienumerable<loanofficer> loanofficers { get; set; }          [hiddeninput(displayvalue = false)]         public datetime datecreated         {             { return string.isnullorempty(datecreated.tostring()) ? datetime.now : datecreated; }             set { datecreated = value; }         }          [hiddeninput(displayvalue = false)]         public datetime dateupdated         {             { return string.isnullorempty(dateupdated.tostring()) ? datetime.now : dateupdated; }             set { dateupdated = value; }         }     } } 


Comments

Popular posts from this blog

javascript - Jquery show_hide, what to add in order to make the page scroll to the bottom of the hidden field once button is clicked -

javascript - Highcharts multi-color line -

javascript - Enter key does not work in search box -