为什么我会得到"未找到父密钥"

时间:2014-10-23 14:47:59

标签: c# fluent-nhibernate

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

我实施的是多对一连接。 因此,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();

        }

希望你能帮助我。

由于

1 个答案:

答案 0 :(得分:0)

我认为你需要改变BankMap:

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

然后银行不会更新PersonAccounts。

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