首页 新闻 会员 周边 捐助

EF code first 如何实现下图中的实体关系

0
悬赏园豆:10 [已解决问题] 解决于 2015-09-24 10:23

 

这样的实体关系和一对多有什么不同?

BornReady的主页 BornReady | 初学一级 | 园豆:7
提问于:2015-09-23 15:40
< >
分享
最佳答案
0

把你的Book实体的CategoryId属性删掉

给Category属性添加Column特性,里面设置数据库列名称

Category的构造函数不需要给Books赋值

创建实体请调用DbSet的Create方法

推荐所有属性都用virtual

收获园豆:5
Kation | 初学一级 |园豆:145 | 2015-09-23 17:09

virtual不是延迟加载用到的吗,其他属性加上这个关键字有什么好处吗?

BornReady | 园豆:7 (初学一级) | 2015-09-24 10:05

@NoSaleNoKilling: 属性修改跟踪

Kation | 园豆:145 (初学一级) | 2015-09-24 10:09

@Kation: 明白了,谢谢!

BornReady | 园豆:7 (初学一级) | 2015-09-24 10:21
其他回答(1)
0

你这是模型,可是在数据库直接生成表的,可以是1对多,可以多对多,看你自己怎么设计模型,也可以用数据库的表生成模型

收获园豆:5
稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-23 15:56

不是,我想通过下面的实体来构建这样的关系,通过fluent API

    public class Book
    {
        public int BookId { get; set; }
        public string Name { get; set; }
        public int CategoryId { get; set; }

        public virtual Category Category { get; set; }
    }

    public class Category
    {
        public int CategoryId { get; set; }
        public string Name { get; set; }

        public virtual ICollection<Book> Books { get; set; }

        public Category()
        {
            Books = new HashSet<Book>();
        }
    }

 

支持(0) 反对(0) BornReady | 园豆:7 (初学一级) | 2015-09-23 16:17

@NoSaleNoKilling: 可以设置外键属性[ForeignKey("CategoryId")]

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-23 16:41

@稳稳的河: 而且更新的时候要把之前的数据库自动删掉重新创建

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-23 16:43

@稳稳的河: 谢谢,

支持(0) 反对(0) BornReady | 园豆:7 (初学一级) | 2015-09-24 10:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册