Entity Framework Core «один к нулю или один», не привязывая включенные отношения при запросеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Entity Framework Core «один к нулю или один», не привязывая включенные отношения при запросе

Сообщение Anonymous »

У меня есть база данных Entity Framework Core с приоритетом кода и отношением один к одному или нулю, настроенным следующим образом:

Код: Выделить всё

public class PrimaryRow
{
public int Id { get; set; }
public string Value { get; set; }

public OptionalRow { get; set; }
}

public class OptionalRow
{
public int Id { get; set; }
public string OptionalValue { get; set; }

public int PrimaryRowId { get; set; }
public PrimaryRow PrimaryRow { get; set; }
}

public class MyContext : DbContext
{
public DbSet
 PrimaryRows { get; set; }
public DbSet OptionalRows { get; set; }
}
При этом создаются следующие таблицы:

Код: Выделить всё

CREATE TABLE "PrimaryRows"
(
"Id" INTEGER NOT NULL CONSTRAINT "PK_PrimaryRows" PRIMARY KEY AUTOINCREMENT,
"Value" TEXT NULL
)

CREATE TABLE "OptionalRows"
(
"Id" INTEGER NOT NULL CONSTRAINT "PK_OptionalRows" PRIMARY KEY AUTOINCREMENT,
"OptionalValue" TEXT NULL,
"PrimaryRowId" INTEGER NOT NULL,
CONSTRAINT "FK_OptionalRows_PrimaryRows_PrimaryRowId" FOREIGN KEY ("PrimaryRowId") REFERENCES "PrimaryRows" ("Id") ON DELETE CASCADE
)
Я запрашиваю данные, используя этот код:

Код: Выделить всё

var rows = await MyContext.PrimaryRows
.Include(p => p.OptionalRow)
.ToListAsync();
Я вижу, что это генерирует следующий SQL:

Код: Выделить всё

SELECT "p"."Id", "p"."Value", "p0"."Id", "p0"."OptionalValue", "p0"."PrimaryRowId"
FROM "PrimaryRows" AS "p"
LEFT JOIN "OptionalRows" AS "p0" ON "p"."Id" = "p0"."PrimaryRowId"
Который действительно включает необязательные реляционные данные.
Однако, когда я смотрю на содержимое строк, необязательный > свойство имеет значение NULL! Таким образом, запросы работают, а привязка данных — нет.
Что мне здесь не хватает?

Подробнее здесь: https://stackoverflow.com/questions/787 ... s-when-que
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»