Nhibernate Viele zu eins-eins-Kaskade verursachen Löschen/InsertC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Nhibernate Viele zu eins-eins-Kaskade verursachen Löschen/Insert

Post by Anonymous »

Ich habe ein Objekt BankingProvider mit einer vielen zu einem Beziehung zu einer Sammlung von Objekten CasinobankingProviders , die sich wiederum auf ein Casino -Objekt beziehen. Es handelt sich also um eine Kreuzungstabelle zwischen einem BankingProvider und einem Casino , wenn ich den BankingProvider aktualisiere. class = "Lang-CS PrettyPrint-Override">

Code: Select all

public BankingProviderMap()
{
Table("BankingProvider");

#region Casinos
Bag(x => x.Casinos, intersectTableMap =>
{
intersectTableMap.Cascade(Cascade.Merge);
intersectTableMap.Table("CasinoBankingProvider");
intersectTableMap.Key(key =>
{
key.Column("BankingProviderId");
key.ForeignKey("FK_CasinoBankingProvider_BankingProvider");
});
},
map => map.ManyToMany(p => p.Column("CasinoId")));
...
...
}

public CasinoBankingProviderMap()
{
Table("CasinoBankingProvider");
ManyToOne(x => x.Casino, manyToOneMap =>
{
manyToOneMap.Cascade(Cascade.All | Cascade.None | Cascade.Persist | Cascade.DeleteOrphans);
manyToOneMap.Class(typeof(Casino));
manyToOneMap.Column("CasinoId");
manyToOneMap.ForeignKey("FK_CasinoBankingProvider_Casino");
});

ManyToOne(x => x.BankingProvider, manyToOneMap =>
{
manyToOneMap.Cascade(Cascade.None);
manyToOneMap.Class(typeof(BankingProvider));
manyToOneMap.Column("BankingProviderId");
manyToOneMap.ForeignKey("FK_CasinoBankingProvider_BankingProvider");
});

Property(x => x.MinimumDepositAmount);
Property(x => x.DepositFeeAmount);
Property(x => x.DepositFeePercent);
Property(x => x.DepositPeriodMode);
Property(x => x.DepositPeriodApproximateHours);
Property(x => x.DepositPeriodRangeStartHours);
Property(x => x.DepositPeriodRangeEndHours);
Property(x => x.MinimumWithdrawalAmount);
Property(x => x.WithdrawalFeeAmount);
Property(x => x.WithdrawalFeePercent);
Property(x => x.WithdrawalPeriodMode);
Property(x => x.WithdrawalPeriodApproximateHours);
Property(x => x.WithdrawalPeriodRangeStartHours);
Property(x => x.WithdrawalPeriodRangeEndHours);

}

public CasinoMap()
{
Table("Casino");
DynamicUpdate(true);

#region BankingProviders
Bag(x => x.CasinoBankingProviders, oneToManyMap =>
{
oneToManyMap.Cascade(Cascade.Refresh | Cascade.DeleteOrphans);
oneToManyMap.Table("CasinoBankingProvider");
oneToManyMap.Key(key =>
{
key.Column("CasinoId");
key.ForeignKey("FK_Casino_BankingProvider_Casino");
});
},
map => map.OneToMany());

#endregion
...
...
}
Meine Annahme hier ist, dass meine Kaskade Flags die Ursache sind, aber ich habe mehrere Kombinationen ausprobiert und NH immer einen Löschdeleten - und für den CasinobankingProvider einfügen, obwohl der CasinobankingProvider , auch wenn es modifiziert ist, und nicht updiert und delziert und nicht uswriert (nicht mehr ist, und nicht uswriert und wird nicht uswriert (nicht mehr (ohne dass es wird. Wiedereingestaltet. Cascade Flags scheinen keinen Einfluss auf die generierten SQL? PrettyPrint-Override ">

Code: Select all

exec sp_executesql N'UPDATE BankingProvider SET DateAdded = @p0, DateUpdated = @p1, Name = @p2, IsActive = @p3, IsDefaultProvider = @p4, CanDeposit = @p5, CanWithdraw = @p6, IsMobileCompatible = @p7, PaymentMedium = @p8, Description = @p9, PaymentType = @p10, MinimumDepositAmount = @p11, MaximumDepositAmount = @p12, DepositFeeAmount = @p13, DepositFeePercent = @p14, WithdrawalTurnaroundMode = @p15, WithdrawalTurnaroundApproximateHours = @p16, WithdrawalTurnaroundRangeStartHours = @p17, WithdrawalTurnaroundRangeEndHours = @p18, MinimumWithdrawalAmount = @p19, MaximumWithdrawalAmount = @p20, WithdrawalFeeAmount = @p21, WithdrawalFeePercent = @p22, DepositTurnaroundMode = @p23, DepositTurnaroundApproximateHours = @p24, DepositTurnaroundRangeStartHours = @p25, DepositTurnaroundRangeEndHours = @p26 WHERE Id = @p27',N'@p0 datetime,@p1 datetime,@p2 nvarchar(4000),@p3 bit,@p4 bit,@p5 bit,@p6 bit,@p7 bit,@p8 nvarchar(4000),@p9 nvarchar(4000),@p10 int,@p11 decimal(28,5),@p12 decimal(28,5),@p13 decimal(28,5),@p14 decimal(28,5),@p15 int,@p16 int,@p17 int,@p18 int,@p19 decimal(28,5),@p20 decimal(28,5),@p21 decimal(28,5),@p22 decimal(28,5),@p23 int,@p24 int,@p25 int,@p26 int,@p27 int',@p0='2024-06-13 13:05:52',@p1='2025-04-14 10:55:15',@p2=N'1inch Crypto',@p3=1,@p4=0,@p5=0,@p6=0,@p7=0,@p8=NULL,@p9=NULL,@p10=0,@p11=0,@p12=0,@p13=0,@p14=0,@p15=1,@p16=NULL,@p17=NULL,@p18=NULL,@p19=0,@p20=0,@p21=0,@p22=0,@p23=1,@p24=NULL,@p25=NULL,@p26=NULL,@p27=699
go
exec sp_executesql N'DELETE FROM CasinoBankingProvider WHERE BankingProviderId = @p0',N'@p0 int',@p0=699
go
exec sp_executesql N'INSERT INTO CasinoBankingProvider (BankingProviderId, CasinoId) VALUES (@p0, @p1)',N'@p0 int,@p1 int',@p0=699,@p1=2218
go

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post