NHibernate 异常:方法 Add 应该是“公共/受保护的虚拟”或“受保护的内部虚拟”

2023-11-22

以这个类为例:

public class Category : PersistentObject<int>
{
    public virtual string Title { get; set; }
    public virtual string Alias { get; set; }

    public virtual Category ParentCategory { get; set; }
    public virtual ISet<Category> ChildCategories { get; set; }


    public /*virtual*/ void Add(Category child)
    {
        if (child != null)
        {
            child.ParentCategory = this;
            ChildCategories.Add(child);
        }
    }
}

当运行没有 add 方法的 virtual 关键字的应用程序时,我收到此错误:

method Add should be 'public/protected virtual' or 'protected internal virtual'

我理解为什么属性需要声明为虚拟,因为它们需要被延迟加载功能覆盖。

但我不明白为什么需要将方法声明为虚拟...出于什么原因需要重写它们?

这非常令人困惑!


方法也需要是虚拟的,因为它们可以访问字段。考虑这种情况:

class Entity
{

  //...
  private int a;
  public virtual int A 
  { 
     get { return a; }
  }

  public virtual void Foo()
  {
    // lazy loading is implemented here by the proxy
    // to make the value of a available
    if (a > 7) 
    // ...
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NHibernate 异常:方法 Add 应该是“公共/受保护的虚拟”或“受保护的内部虚拟” 的相关文章

  • 是否应该重构此 C# 代码以使用 Lazy 类?

    我有以下代码 可以在同一秒通过多个网络请求调用 因此 我不希望第二个以上请求访问数据库 而是等到第一个请求访问数据库 我应该重构它以使用Lazy
  • 抽象 NHibernate 标准是否有价值?

    我对 NHibernate 相当陌生 我见过的大多数示例都在基础上添加了一些抽象层Criterion or DetachedCriterion类 在简单的情况下 它是某种Query类可能看起来像这样 public class Query
  • NHibernate 获取没有主键的子项

    我试图通过映射将对象集合放入父对象中 我有一个主键是 guid Id 的父对象 ScoreCard 和一个主键是 guid Id 的子 Score 对象 我想根据两个对象都有的两个字段为父对象选择子对象 但我无法让它工作 这是映射
  • 为什么 NHibernate 在选择时删除然后插入复合元素?

    有人可以向我解释一下关于 NHibernate 如何处理复合元素的这个小谜团吗 我的课程看起来像这样 public class Blog public virtual int Id get private set public virtua
  • 使用二级缓存时,nhibernate 查询缓存和实体缓存有什么区别?

    我正在尝试设置 nhibernate 二级缓存我在这篇文章中看到 http www gitshah com 2012 03 nhibernate and caching part 2 html我想了解查询缓存和实体缓存之间的区别 它说你需要
  • 存储库本身通常不经过测试?

    抱歉 我对存储库模式 单元测试和 orm 工具还不熟悉 我一直在研究单元测试和存储库模式 并得出一些结论 我想知道我是否正确 存储库模式有助于在使用它的控制器中替换单元测试 例如 对吧 因为创建上下文 在 EF 中 或会话 在 NH 中 的
  • 枚举解析似乎不适用于 Fluent NHibernate

    我有一个数据访问类 带有一个名为 Salutation 的枚举 public enum Salutation Unknown 0 Dame 1 etc Mr 5 etc 我正在使用 NHibernate 保留该类 直到今天早上我还在使用 h
  • NHibernate 表更新事件

    我有这个表映射 我认为细节并不重要 WithTable COPACKER FACILITY Id x gt x FacilityNumber FACILITY NUM GeneratedBy Sequence FACSEQ Map x gt
  • 每个会话的 Nhibernate 会话示例

    您好 nhibernate 的一些专业人士能给我每个会话的 Nhibernate 会话实现示例还是 unhaddins 实现吗 或者解释如何做到这一点 此致 恩迪斯 我使用 NHibernate 工作了 4 年 此前我曾与 每次操作打开会话
  • 如何在使用 NHibernate 进行任何插入之前增加 ID

    看起来NH只获取一次MAX ID 第一次插入然后在内部存储这个值 这会在其他进程插入数据时给我带来一些问题 然后我没有实际的 ID 并且抛出重复键异常 假设我们有桌子Cats CREATE TABLE Cats ID int Name va
  • 将 MyGeneration 与 Fluent NHibernate 结合使用

    我在这里找到了一个使用 MyGeneration 生成 NHibernate 代码的绝佳模板 http vucetica blogspot com 2009 01 nhibernate template for my Generation
  • 如何点击 Google Trends 中的“加载更多”按钮并通过 Selenium 和 Python 打印所有标题

    这次我想单击一个按钮来加载更多实时搜索 这是网站的链接 该按钮位于页面末尾 代码如下 div class feed load more button Load more div 由于涉及到一些 AngularJS 我不知道该怎么做 有什么提
  • 如何处理 Primefaces 延迟加载中的错误?

    我无法让用户知道发生的异常PrimeFaces http primefaces org LazyDataModel load方法 我正在从数据库加载数据 当引发异常时 我不知道如何通知用户 我尝试添加FacesMessage to Face
  • 页面其余部分完成加载后延迟加载 html5 视频

    我有一个视频元素用作我正在构建的页面底部部分的背景 我试图通过将 src 存储为 data src 属性并使用 jQuery 在其他资源加载后将其应用到 src 属性 因为它不是英雄图像或任何东西 我想加载海报以节省加载时间 然后稍后加载视
  • 使用 SQLite 测试 NHibernate“没有这样的表” - 生成模式

    我正在尝试使用内存中的 SQLite 数据库来测试 NHibernate 提供的数据层 我读过很多关于如何进行此设置的博客和文章 但我现在很困惑为什么它不起作用 问题 当我运行单元测试时 我收到错误 没有这样的表 学生 我读过的文章表明这
  • NHibernate 中具有不同类型答案的问题

    我正在尝试找到一个问卷问题的简洁解决方案 假设我有一个Questionnaire类有一个集合Answers e g public class Questionnaire public virtual ISet
  • NHibernate:将 ICriteria 转换为 DetachedCriteria

    任何人都知道如何将 ICriteria 转换为 DetachedCriteria 我需要使用现有的 ICriteria 作为子查询的一部分 使用 Add Subqueries PropertyIn Name myDetachedCriter
  • Lightspeed 与 NHibernate

    有什么体验光速 http www mindscape co nz products LightSpeed comparison aspx Mindscape 提供的比较并没有过多说明 NHibernate Lightspeed 看起来很灵活
  • AutoMapper 将 IdPost 映射到 Post

    我正在尝试根据规则将 DTO 上的 int IdPost 映射到 Blog 对象上的 Post 对象 我想实现这一点 BlogDTO IdPost gt Blog Post 帖子将由 NHibernate 加载 Session Load I
  • Lazy 实现和 .NET 泛型

    我正在寻找进行延迟初始化的方法并发现Lazy

随机推荐