上一章讲了SAP学习笔记 - BTP CAP开发01 - 新建BAS Project,npm install, cds init,cds watch,cds add data --records 5
https://blog.csdn.net/shi_ly/article/details/159884366
本章继续学习CAP开发的知识。
目录,
[1-1,Assosication 表关联 1:1](#1-1,Assosication 表关联 1:1)
[1-2,Association 表关联:1:N](#1-2,Association 表关联:1:N)
[1-3,加 Author Service](#1-3,加 Author Service)
[1-5,加 Chapters Service](#1-5,加 Chapters Service)
下面是详细内容。
1,Projects
1-1,Assosication 表关联 1:1
entity Books : cuid, managed {
Title : String;
Author : Association to Author;
}
entity Author : cuid, managed {
Name : String;
}
因为咱们这里用的UUID作为Key,所以它们是通过这个Key进行关联的

1-2,Association 表关联:1:N
entity Books : cuid, managed {
title : String;
author : Association to Author;
}
entity Author : cuid, managed {
name : String;
books : Association to many Books on books.author = $self;
}

也可以同样,删掉 data,然后用命令 cds data --records 5 来重建
这里也加一个常用快捷键
Shift+Alt+F ==》格式化代码
Shift+Alt+向下箭头 ==》拷贝上一行代码
1-3,加 Author Service
using {Bookstore.db as db} from '../db/schema';
service BookstoreService {
entity Books as projection on db.Books;
entity Authors as projection on db.Author;
}

然后可以用cds watch,打开 http://localhost:4004

都可以看到数据了

如果想看两个表关联,可以在URL加 ?$expand=books
[https://port4004-workspaces-ws-fwdqw.us10.trial.applicationstudio.cloud.sap/odata/v4/bookstore/Authors?$expand=books](https://port4004-workspaces-ws-fwdqw.us10.trial.applicationstudio.cloud.sap/odata/v4/bookstore/Authors?$expand=books "https://port4004-workspaces-ws-fwdqw.us10.trial.applicationstudio.cloud.sap/odata/v4/bookstore/Authors?$expand=books")
就可以看到关联了哈

1-4,Composition
其实就是父子。
跟关联(Association)不同,没有父,就不会有子。
比如一本书(Books)里面有很多章节(Chapters),但是没有书,就不会有章节这个东西。
entity Books : cuid, managed {
title : String;
author : Association to Author;
Chapters : Composition of many Chapters
on Chapters.book = $self;
}
entity Author : cuid, managed {
name : String;
books : Association to many Books
on books.author = $self;
}
entity Chapters : cuid, managed {
number : Integer;
key book : Association to Books;
}
建这个东西的用途就是,删父的时候,子也一起删掉了,跟DB里面那个级联删除似的。

同样,用 cds data --records 5重建数据
但是注意1点,父表里面是不存在Composition字段的,
比如Books表里,没有Chapters字段,但是Chapter表里, 有Books字段


其实,不仅是Composition,
Association也一样,1对多的情况,1的那一方并不能存在多的那一方的字段
比如Author可以写很多书,Author表里就没有Books字段
但是Books表里必须有Author字段

1-5,加 Chapters Service
using {Bookstore.db as db} from '../db/schema';
service BookstoreService {
entity Books as projection on db.Books;
entity Authors as projection on db.Authors;
entity Chapters as projection on db.Chapters;
}
同样的,加 ?$expand=Chapters,你也可以打开一本里有多少章:
[https://port4004-workspaces-ws-fwdqw.us10.trial.applicationstudio.cloud.sap/odata/v4/bookstore/Books?$expand=Chapters](https://port4004-workspaces-ws-fwdqw.us10.trial.applicationstudio.cloud.sap/odata/v4/bookstore/Books?$expand=Chapters "https://port4004-workspaces-ws-fwdqw.us10.trial.applicationstudio.cloud.sap/odata/v4/bookstore/Books?$expand=Chapters")

以上就是本篇的全部内容。
如果大家觉得还行,希望大家多点赞,收藏,转发,感谢!
更多SAP顾问业务知识请点击下面目录链接或东京老树根的博客主页