博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Castle ActiveRecord的一对多问题
阅读量:6956 次
发布时间:2019-06-27

本文共 986 字,大约阅读时间需要 3 分钟。

如果有表Blog和Posts之间有一对多关系,那么如果二者关系对应外键属性代码如下所示:

        //一对多的一方添加以下字段和属性
        private IList<Post> posts=new List<Post>();
        [HasMany(Table="Posts", ColumnKey="blogid", Inverse=true, Cascade=ManyRelationCascadeEnum.AllDeleteOrphan)]
        public IList<Post> Posts
        {
            get { return posts=new List<Post>(); }
            set { posts=value; }
        }
则在使用以下代码时
            Blog blog = Blog.Find(1);//Blog表中有Id值为1的记录
会引发未处理的异常:

 HibernateException

详细信息为:

A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: ActiveRecordDemo.Blog.Posts
 

如果把Blog中的外键关系属性代码改为:

        //一对多的一方添加以下字段和属性
        private IList<Post> posts=new List<Post>();
        [HasMany(Table="Posts", ColumnKey="blogid", Inverse=true, Cascade=ManyRelationCascadeEnum.All)]
        public IList<Post> Posts
        {
            get { return posts=new List<Post>(); }
            set { posts=value; }
        }
 则
Blog blog = Blog.Find(1);

并不会引发异常。

 

此外,Blog实例中有属性:posts,此属性应对应Blog实例的子表中记录实体,但实际却为空(此时子表posts中有对应的子记录) ,不知如何得到子记录并存放在属性posts中。

转载于:https://www.cnblogs.com/Rising/archive/2012/02/27/2370557.html

你可能感兴趣的文章
我的大学之路---2012在迷雾中前进
查看>>
FF下margin不起作用的问题
查看>>
Mysql的几个成功故事
查看>>
Syngress.Nmap.in.the.Enterprise.Your.Guide.to.Network.Scanning
查看>>
小学生都能看懂的表达式计算(图解)
查看>>
物联网有没有创新的思维模式?如果有,会是什么?
查看>>
微会动微信现场互动:年会策划之用产品思维搞定年会
查看>>
利用STP生成树协议实现负载均衡
查看>>
给定一个串,去掉连续的重复字母,
查看>>
我的友情链接
查看>>
MSR2010配置小记
查看>>
微信video标签全屏无法退出bug
查看>>
[转]PostgreSQL 中文资料汇总
查看>>
那些被疯狂追求的女孩,后来怎么样了?
查看>>
(转载)Windows 7 Ultimate(旗舰版)SP1 32/64位官方原版下载(2011年5月12日更新版)...
查看>>
孟岩:通证(token)和通证经济的目的在于改善现有经济的效率性
查看>>
杜鹃演绎奢华春装大片
查看>>
mongoDb
查看>>
HTML框架1
查看>>
servlet:启动的时机
查看>>