Должен ли я использовать обязательный модификатор с навигацией Entity Framework?C#

Место общения программистов C#
Anonymous
Должен ли я использовать обязательный модификатор с навигацией Entity Framework?

Сообщение Anonymous »

Типы ссылок, допускающие значение NULL, включены.

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

public class TestExecution
{
[Key]
public int Id { get; set; }

public ParametersSet? ParametersSet { get; set; }

[ForeignKey("Environment")]
public required int EnvironmentId { get; set; }

public required Environment Environment { get; set; }
}

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

public class ParametersSet
{
[Key]
public int Id { get; set; }

// Other properties

[ForeignKey("TestExecutionId")]
public int TestExecutionId { get; set; }

public TestExecution TestExecution { get; set; }
}

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

public class Environment
{
[Key]
public int Id { get; set; }

// Other properties

public ICollection TestExecutions { get; set; } = new List();
}
Я понимаю, что мне не следует использовать обязательное с необязательным (обнуляемым, поскольку NRT включено) отношением. Следовательно, почему я написал общедоступный набор параметров? ПараметрыSet {получить; набор; в TestExecution.
Однако, от зависимого параметраSet до основного TestExecution, следует ли мне использовать требуемый вот так :

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

public class ParametersSet
{
[Key]
public int Id { get; set; }

[ForeignKey("TestExecutionId")]
public required int TestExecutionId { get; set; }

public required TestExecution TestExecution { get; set; }
}
Или аналогично от зависимого объекта TestExecution к основному объекту Environment?

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

public class TestExecution
{
[Key]
public int Id { get; set; }

public ParametersSet? ParametersSet { get; set; }

[ForeignKey("Environment")]
public required int EnvironmentId { get; set; }

public required Environment Environment { get; set; }
}
Документы EF предлагают использовать require со ссылочными типами, но не указано, следует ли делать это с навигацией или нет.


Подробнее здесь: https://stackoverflow.com/questions/791 ... avigations

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