Я пытаюсь определить отношения, при которых у клиента может быть 0 или 1 адрес. Для этой связи мне нужен идентификатор клиента в таблице адресов, но мне не нужен идентификатор адреса в таблице клиентов. Звучит просто? Я просмотрел образцы, но в OnModelCreating отсутствуют некоторые свойства, такие как hasForeignKey или hasOptional, поэтому ни один из других образцов, которые я смотрел, не работал. Я использую EF Core версии 3.15. Независимо от того, что я пробую, миграция добавляет столбец addressId в таблицу Customer. Я хочу иметь возможность удалить все адреса с помощью оператора sql «удалить из адресов»
Вот мои 2 объекта
public class AddressEntity
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid AddressId { get; set; }
public string Line1 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string PostalCode { get; set; }
public string Country { get; set; }
public virtual Guid Customer { get; set; }
}
public class CustomerEntity
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid CustomerId { get; set; }
public string CustomerName { get; set; }
public string CustomerEmail { get; set; }
public virtual AddressEntity Address { get; set; }
}
Вот мой код миграции
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Addresses",
columns: table => new
{
AddressId = table.Column<Guid>(nullable: false),
Line1 = table.Column<string>(nullable: true),
City = table.Column<string>(nullable: true),
State = table.Column<string>(nullable: true),
PostalCode = table.Column<string>(nullable: true),
Country = table.Column<string>(nullable: true),
Customer = table.Column<Guid>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Addresses", x => x.AddressId);
});
migrationBuilder.CreateTable(
name: "Customers",
columns: table => new
{
CustomerId = table.Column<Guid>(nullable: false),
CustomerName = table.Column<string>(nullable: true),
CustomerEmail = table.Column<string>(nullable: true),
AddressId = table.Column<Guid>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Customers", x => x.CustomerId);
table.ForeignKey(
name: "FK_Customers_Addresses_AddressId",
column: x => x.AddressId,
principalTable: "Addresses",
principalColumn: "AddressId",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateIndex(
name: "IX_Customers_AddressId",
table: "Customers",
column: "AddressId");
}