为什么我得到“;未找到父密钥”;

本文关键字:密钥 为什么 | 更新日期: 2023-09-27 18:27:31

我得到这个错误有什么原因吗。在发布这个问题之前,我真的搜索了这个网站。我评论了我之前的一些尝试。

我实现的是多对一连接。因此,PersonAccount有一个BankId列(FK),而Bank对PersonAccount一无所知。在数据库级别上实现了FK约束。

        public BankMap()
        {
            Table("Bank");
            Not.LazyLoad();
            Id(x => x.Id).Column("BankId").GeneratedBy.Sequence("BANK_SEQ");
            Map(x => x.BankName);
            HasMany(x => x.PersonAccounts).KeyColumn("BANKID").Cascade.All();
            //HasMany(x => x.PersonAccounts).KeyColumn("BANKID").Cascade.All().Inverse();
            //HasMany(x => x.PersonAccounts).KeyColumn("BANKID").Cascade.All().None();
       //     HasMany(x => x.PersonAccounts)
       //.Cascade.AllDeleteOrphan()
       //.KeyColumn("BANKID");
        }
public PersonAccountMap()
        {
            Table("PersonAccounts");
            Not.LazyLoad();
            Id(x => x.Id).Column("AccountId").GeneratedBy.Sequence("PERSONACCOUNTS_SEQ");
            Map(x=>x.PersonName);
            References(x => x.Bank, "BANKID");
            //References(x => x.Person, "PERSONID").Cascade.None();
        }

希望你能帮助我。

感谢

为什么我得到“;未找到父密钥”;

我认为您需要将BankMap更改为具有:

HasMany(x => x.PersonAccounts).KeyColumn("BANKID").Inverse();

那么银行将不会更新个人账户。

还有一个提示,根据我自己的经验(你不需要这么做),我倾向于在映射中发生更改后重新构建项目,因为我偶尔会发现VS中的映射项目没有用我的最新更改正确构建。