Настройте ядро ​​EF, чтобы не создавать внешний ключ базы данных для указанных c свойств навигации - PullRequest
3 голосов
/ 12 марта 2020

Рассмотрим сущности Company и Product:

public class Company
{
    prop Guid Id {get; set;}
}

public class Product
{
    prop Guid CompanyId {get; set;}
    prop Company Company {get; set;}
}

При создании миграций я хочу, чтобы отношения от Product до Company не создавали ограничения внешнего ключа в базе данных.

Я понимаю все проблемы, связанные с отсутствием создания внешних ключей, я всегда создаю внешние ключи, но в одной конкретной задаче c я хочу избежать одного внешнего ключа. Как это сделать?

Объяснение: Это некоторые диагностические данные, поэтому мне нужно хранить всю информацию, которая может помочь в диагностике, даже когда основной объект не может быть вставлен. Если он вставлен, мы будем рады использовать свойства навигации для перехода к нему. Если это не удалось, мы можем go вернуться к исходному источнику данных и посмотреть, что не так с этим параметром c Company

1 Ответ

1 голос
/ 12 марта 2020

Удалить созданные коды ForeignKey, созданные EF. А затем выполните действие по миграции. Надеюсь, что это поможет вам. Например: (некоторые строки, как показано ниже)

                table.ForeignKey(
                    name: "FK_Products_Companies_CompanyId",
                    column: x => x.CompanyId,
                    principalTable: "Companies",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Cascade);
...