У меня есть следующая функция для добавления объекта в базу данных:
public void AddEnterpriseShare(Objects.FinancialTransactionEnterpriseShare share)
{
_services.DbContext.FinancialTransactionEnterpriseShares.Add(share);
_services.DbContext.SaveChanges();
}
Я называю это следующим образом:
foreach (var enterprise in model.Enterprise)
{
Service.FinancialTransactionServices.AddEnterpriseShare(new Data.Objects.FinancialTransactionEnterpriseShare()
{
ProfitLossId = profitLoss.Id,
EnterpriseId = enterprise.Id,
Percentage = enterprise.Percent,
FinancialTransactionId = transaction.Id
});
}
Этот цикл должен выполняться 6 раз и добавлять 6 новых записей в базу данных, по одной для каждого идентификатора. Если я покажу этот код, то увижу, что запись создается в базе данных ... затем во второй раз в цикле обновляется исходная запись, а не вставляется вторая запись!
Почему я вижу это поведение?
Класс сущности выглядит следующим образом:
public class FinancialTransactionEnterpriseShare
{
public int Id { get; set; }
public int ProfitLossId { get; set; }
public int EnterpriseId { get; set; }
public decimal Percentage { get; set; }
public int FinancialTransactionId { get; set; }
public ProfitLoss ProfitLoss { get; set; }
public Enterprise Enterprise { get; set; }
public FinancialTransaction FinancialTransaction { get; set; }
}
migrationBuilder.CreateTable(
name: "FinancialTransactionEnterpriseShares",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
EnterpriseId = table.Column<int>(nullable: false),
FinancialTransactionId = table.Column<int>(nullable: false),
Percentage = table.Column<decimal>(nullable: false),
ProfitLossId = table.Column<int>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_FinancialTransactionEnterpriseShares", x => x.Id);
table.ForeignKey(
name: "FK_FinancialTransactionEnterpriseShares_Enterprises_EnterpriseId",
column: x => x.EnterpriseId,
principalTable: "Enterprises",
principalColumn: "Id",
onDelete: ReferentialAction.NoAction);
table.ForeignKey(
name: "FK_FinancialTransactionEnterpriseShares_FinancialTransactions_FinancialTransactionId",
column: x => x.FinancialTransactionId,
principalTable: "FinancialTransactions",
principalColumn: "Id",
onDelete: ReferentialAction.NoAction);
table.ForeignKey(
name: "FK_FinancialTransactionEnterpriseShares_ProfitLosses_ProfitLossId",
column: x => x.ProfitLossId,
principalTable: "ProfitLosses",
principalColumn: "Id",
onDelete: ReferentialAction.NoAction);
});
migrationBuilder.CreateIndex(
name: "IX_FinancialTransactionEnterpriseShares_EnterpriseId",
table: "FinancialTransactionEnterpriseShares",
column: "EnterpriseId");
migrationBuilder.CreateIndex(
name: "IX_FinancialTransactionEnterpriseShares_FinancialTransactionId",
table: "FinancialTransactionEnterpriseShares",
column: "FinancialTransactionId",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_FinancialTransactionEnterpriseShares_ProfitLossId",
table: "FinancialTransactionEnterpriseShares",
column: "ProfitLossId");