Я делал проект / учебник, и у меня есть два класса, которые связаны с рассматриваемой миграцией. Сначала в классе Customer
, а затем в классе MembershipType
.
public class Customer
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
public bool IsSubcribedToNewsletter { get; set; }
public MembershipType MembershipType { get; set; }
public byte MembershipTypeId { get; set; }
}
public class MembershipType
{
public int Id { get; set; }
public short SignUpFee { get; set; }
public byte DurationInMonths { get; set; }
public byte DiscountRate { get; set; }
}
Когда я выполняю миграцию, он создает это
migrationBuilder.CreateTable(
name: "Customers",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Name = table.Column<string>(maxLength: 255, nullable: false),
IsSubcribedToNewsletter = table.Column<bool>(nullable: false),
MembershipTypeId1 = table.Column<int>(nullable: true),
MembershipTypeId = table.Column<byte>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Customers", x => x.Id);
table.ForeignKey(
name: "FK_Customers_MembershipTypes_MembershipTypeId1",
column: x => x.MembershipTypeId1,
principalTable: "MembershipTypes",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateIndex(
name: "IX_Customers_MembershipTypeId1",
table: "Customers",
column: "MembershipTypeId1");
}
Откуда MembershipTypeId1
?
Я следил за инструкцией, и это вообще не объясняется. Я также использую новую версию. NET, поэтому мне еще труднее выяснить, почему и как исправить это на основе того, что я вижу.
MembershipTypeId1
должно представлять объект MembershipType
из другого класса. Я думаю, что это проблема, но я не уверен, почему он конвертирует его в MembershipTypeId1
. Также как бы вы использовали это в таблице для представления объекта. Обычно я просто использую идентификатор и выполняю соединение, поэтому я не уверен, почему они делают это таким образом, и в чем выгода.