entity framework - WCF + EF return object with FK -


i facing following issue: have productorder class has productid foreign key product class. when invoke following method:

public ienumerable<productorder> getorders() {       return oddzialdb.productorders; } 

orders associated product can write this:

oddzialdb.productorders.first().product.name; 

but when reaches client turns out there no association product null (only productid included). in dbcontext have set

   base.configuration.proxycreationenabled = false;    base.configuration.lazyloadingenabled = false; 

on wcf service side auto-generated ef productorder class looks follows:

 public partial class productorder     {         public int id { get; set; }         public nullable<int> productid { get; set; }         public int quantity { get; set; }          public virtual product product { get; set; }     } 

what happens looses connections tables associated foreign keys?

make relationship virtual in example:

public class productorder {     public int id { get; set; }     public virtual product product { get; set; }     public int productid { get; set; } } 

by turning relationship virtual, entity framework generate proxy of productorder class contain reference of product.

to make sure work, product has contain reference productorder:

public class product {     public int id { get; set; }     public string name { get; set; }     public virtual icollection<productorder> productorders { get; set; } } 

set these variables true on dbcontext:

configuration.lazyloadingenabled = true; configuration.proxycreationenabled = true; 

on wcf application, add following class, allow proxy serialization:

public class applydatacontractresolverattribute : attribute, ioperationbehavior {     public applydatacontractresolverattribute()     {     }      public void addbindingparameters(operationdescription description, bindingparametercollection parameters)     {     }      public void applyclientbehavior(operationdescription description, system.servicemodel.dispatcher.clientoperation proxy)     {         datacontractserializeroperationbehavior datacontractserializeroperationbehavior =             description.behaviors.find<datacontractserializeroperationbehavior>();         datacontractserializeroperationbehavior.datacontractresolver =             new proxydatacontractresolver();     }      public void applydispatchbehavior(operationdescription description, system.servicemodel.dispatcher.dispatchoperation dispatch)     {         datacontractserializeroperationbehavior datacontractserializeroperationbehavior =             description.behaviors.find<datacontractserializeroperationbehavior>();         datacontractserializeroperationbehavior.datacontractresolver =             new proxydatacontractresolver();     }      public void validate(operationdescription description)     {         // validation.     } } 

then on servicecontract interfaces add dataannotation [applydatacontractresolver] right among other annotations such [operationcontract], above method signature returns entity:

[operationcontract] [applydatacontractresolver] [faultcontract(typeof(atcwcfentrynotfoundexception))] case getsinglebycasenumber(int number); 

Comments

Popular posts from this blog

Magento/PHP - Get phones on all members in a customer group -

php - Bypass Geo Redirect for specific directories -

php - .htaccess mod_rewrite for dynamic url which has domain names -