Nhibernate - 找不到相关记录时,不存在具有给定标识符的行

时间:2018-03-12 13:20:02

标签: c# .net nhibernate automapper nhibernate-mapping

我的数据库中有两个表(Products和StockItems),其中有相关的表。此外,我有一个代表产品实体的视图模型,以及一个库存项目列表。要将一个类解析为另一个类,我正在使用AutoMapper。 当我尝试将我的产品解析为我的产品视图模型时,当我没有相关的库存项目时,我收到异常。当我有,没有生成例外。我收到的消息是“找不到相关记录时,没有给定标识符的行”。 我读到它可以通过在映射上使用“NotFoud.Ignore”注释来修复,但是,我做了,它不起作用。我还读到它可能是外键的映射问题(映射不能以fisically方式存在),但我查看了映射和表,它看起来很好(同样,相关记录在它们存在时加载正常)。

将StockItems列表映射到ProductEntity的代码如下:

Set
 (
    x => x.StockItems,
    m =>
    {
        m.Key(k => k.Column("ProductId"));
        m.Lazy(CollectionLazy.NoLazy); ;
        m.Fetch(CollectionFetchMode.Select);
    },
    map => map.OneToMany(x =>
    {
        x.Class(typeof(StockItem));
    })
);

在StockItems中,我有以下代码来映射Product实体:

ManyToOne
(
    x => x.Product,
    m =>
    {
      m.Column("ProductId");
      m.ForeignKey("FK_StockItems_ProductId");
      m.Lazy(LazyRelation.NoLazy);
      m.Cascade(Cascade.None);
});

1 个答案:

答案 0 :(得分:0)

好的,当找不到子实体时,您会遇到问题。你可以试试这个 我认为 NotFound.Ignore()