在SQLServer上:
表:FinanceiroLancamento
标识 名称 IdFinanceiroLancamentoCaixa IdFinanceiroLancamentoBanco
表:FinanceiroLancamentoCaixa
标识 钱
在EF上 - “FinanceiroLancamento”的代码优先:
Property(p => p.Name)
.IsRequired();
HasOptional(p => p.FinanceiroLancamentoCaixa)
.WithMany()
.HasForeignKey(p => p.IdFinanceiroLancamentoCaixa);
在EF上 - “FinanceiroLancamentoCaixa”的代码优先:
Property(p => p.Money)
.HasPrecision(15, 2)
.IsRequired();
我的SQLServer关系:
ALTER TABLE FinanceiroLancamento ADD CONSTRAINT [FinanceiroLancamento_003_FKEY] FOREIGN KEY([IdFinanceiroLancamentoCaixa])参考文献FinanceiroLancamentoCaixa([Id])ON DELETE CASCADE ON UPDATE CASCADE;
所以在我可以做的源代码中:
var money = financeiroLancamento.FinanceiroLancamentoCaixa.Money:
我的关系中的问题是,当我删除“FinanceiroLancamento”时,它不会删除“FinanceiroLancamentoCaixa”。但如果我删除“FinanceiroLancamentoCaixa”,则删除“FinanceiroLancamento”。
我想要相反,我想删除“FinanceiroLancamento”并删除“FinanceiroLancamentoCaixa”。我该怎么办?
(我想继续使用EF导航从FinanceiroLancamento到FinanceiroLancamentoCaixa)
感谢。
致以最诚挚的问候,
Wilton Ruffato Wonrath
答案 0 :(得分:0)
这个名字非常奇怪。我不太适合EF,但我认为你想要每个FinanceiroLancamento记录的许多(或零或一个)FinanceiroLancamentoCaixa记录。在SQL中执行此操作的常规方法是在两个表中都有一个Id列,以及FinanceiroLancamentoCaixa表中的“IdFinanceiroLancamento”列。
然后您将外键定义为
ALTER TABLE FinanceiroLancamentoCaixa
ADD CONSTRAINT FK_FinanceiroLancamentoCaixa_FinanceiroLancamento
FOREIGN KEY (IdFinanceiroLancamento)
REFERENCES FinanceiroLancamento(Id)
ON DELETE CASCADE
ON UPDATE CASCADE;
然后,当您删除FinanceiroLancamento记录时,级联也会删除FinanceiroLancamentoCaixa记录。