.net Odata 插件
OData Connected Service
https://marketplace.visualstudio.com/items?itemName=laylaliu.ODataConnectedService#review-details
OData v4 Client Code Generator
https://marketplace.visualstudio.com/items?itemName=bingl.ODatav4ClientCodeGenerator
1.在Byd中建立自定义 OData服务


![]()
服务名称要用英文开头 不包含特殊字符,不然会报错,保存
2.设置OData服务内容

工作中心视图用于设置整体服务的权限,也可以不设置,然后在实体对象中明细设置对象权限

选择业务对象.并创建对应实体类型

导入功能中,设置功能类型和参数

保存并激活
![]()
打开 服务 URL 并保存为 接口配置.XML

测试接口

3.在VS 2015中使用
添加服务引用
![]()
地址可以选择保存的 接口配置.XML 也可以直接使用URL(需要用Byd 用户登陆)

点确定就可以了
4.在VS 2017中使用
添加链接的服务

选择插件,没安装的需要安装

选择导出的 接口配置.xml (不支持URL登陆)

5.Codeing
static void Main(string[] args){var url = "https://my600301.sapbyd.cn/sap/byd/odata/cust/v1/odatacardtest";odatacardtest odata = new odatacardtest(new Uri(url)){//认证信息Credentials = new NetworkCredential("zh3305", "*******")};//执行查询 where 会自动转换成ABAP查询语句.支持常见查询语句转换 Contains StartsWith EndWith == 等等常用语句var cardRoots = odata.TCardRootCollection.Where(t => t.CarParkName.Contains("2")).ToList();Console.WriteLine(JsonConvert.SerializeObject(cardRoots));Console.ReadKey();}}
//.net Core static async Task Main(string[] args){var url = "https://my600301.sapbyd.cn/sap/byd/odata/cust/v1/odatacardtest";odatacardtest odata = new odatacardtest(new Uri(url)){//认证信息Credentials = new NetworkCredential("zh3305", "**********")};var query = (DataServiceQuery<TCardRoot>)(from cust in odata.TCardRootCollectionwhere cust.CarParkName == "2"select cust);// 必须改为调用 BeginExecute 和 EndExecute 方法。query.BeginExecute(ar =>{if (ar.AsyncState is DataServiceQuery<TCardRoot> peopleQuery){var people = peopleQuery.EndExecute(ar).ToArray();foreach (var p in people){Console.WriteLine(p.CarParkName);}Console.WriteLine(JsonConvert.SerializeObject(people));}}, query);Console.ReadKey();}