我正在尝试进行一个非常规的连接,就像这样:
builder.HasOne(x => x.MATERIAL_OBJ)
.WithMany()
.HasForeignKey(c => c.MATERIAL)
.HasPrincipalKey(p => p.MATERIAL_CODE);因为我的一个表中的数据来自外部源,并且我需要通过非PK (VARCHAR)字段与另一个表进行连接。我的表格如下:
转换表
+---------+----------+
| ID | MATERIAL |
+---------+----------+
| 1 | ABC |
| 2 | HIJ |
+---------+----------+材料表:
+---------------+---------------+
| MATERIAL_CODE | SUPPLIER_NAME |
+---------------+---------------+
| ABC | SUP 1 |
| DEF | SUP 2 |
+---------------+---------------+中转台总是坐满了人,有时还会摆满我们没有的材料。如果我们有材料,那么对象被正确填充,我面临的问题是,每当材料不存在于表中时,我的odata就不能正常工作,破坏返回对象,如下所示:

有没有办法让odata返回null,而不是中断返回?
编辑:返回值如下:
{"@odata.context":"http://MYAPI/odata/$metadata#TRANSIT(Id,MATERIAL,MATERIAL_OBJ,MATERIAL_OBJ()","value":[{"Id":12567,"MATERIAL":"REDACTED"此外,这似乎与odata有关,因为对象是在API中填充的。
发布于 2019-11-05 22:34:45
我意识到这是EF Core的一个问题,因为我做了非常规的映射。我决定做一个视图,并将其映射到EF。
https://stackoverflow.com/questions/58510982
复制相似问题