Разрыв Одаты с нетрадиционной ассоциацией - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь создать нетрадиционное объединение, например:

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         |
+---------------+---------------+

Таблица транзитов всегда заполняется, и иногда с материалами, которых у нас нет в наличии,Если у нас есть материал, тогда объект заполнен правильно, проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда материал не существует в таблице, мои оддаты просто не работают должным образом, ломая возвращаемый объект, например так:

The return from my odata

Есть ли какой-либо способ для оддата вернуть нулевое значение, вместо прерывания возврата?

РЕДАКТИРОВАТЬ: ниже возвращается значение:

{"@odata.context":"http://MYAPI/odata/$metadata#TRANSIT(Id,MATERIAL,MATERIAL_OBJ,MATERIAL_OBJ()","value":[{"Id":12567,"MATERIAL":"REDACTED"

Кроме того, похоже, что это что-то с odata, поскольку объекты заполняются в API.

1 Ответ

0 голосов
/ 05 ноября 2019

Я понял, что это проблема с EF Core из-за нестандартного отображения, которое я сделал. Вместо этого я решил сделать View и сопоставил его с EF.

...