【问题标题】:Modelling two one-to-many relationships as one将两个一对多关系建模为一个
【发布时间】:2014-10-06 12:10:48
【问题描述】:

我不确定以下概念的名称是什么,这是有问题的,因为我正试图在我的实体框架域模型中实现它(我的声誉不足以发布图像,尽管它会很有用! ):

Permit -- 有很多 --> OfficePermit -- 有很多 --> Task

本质上这是PermitTask 之间的一对多关系,我想在我的许可域模型上用集合导航属性ICollection<Task> Tasks 来表示它。

我对在 ViewModel 层中将其实现为额外属性不感兴趣,因为我依赖于实体框架生成的元数据以供客户端使用(使用 Breeze.js)。我将如何在我的域模型中表示这种关系 - 甚至可能吗?

【问题讨论】:

    标签: c# relational-database entity-framework-6


    【解决方案1】:

    你可以这样做......

    public class Permit
    {
        public Permit()
        {
            this.PermitId = Guid.NewGuid().ToString();
        }
    
        public string PermitId { get; set; }
    
        public ICollection<OfficePermit> OfficePermits { get; set; }
    }
    
    public class OfficePermit   
    {
        public OfficePermit()
        {
            this.OfficePermitId = Guid.NewGuid().ToString();
        }
    
        public string OfficePermitId { get; set; }
    
        public string PermitId { get; set; }
    
        public Permit Permit { get; set; }
    
        public ICollection<@Task> Tasks { get; set; }
    }
    
    public class @Task
    {
        public Task()
        {
            this.TaskId = Guid.NewGuid().ToString();
        }
    
        public string TaskId { get; set; }
    
        public OfficePermit OfficePermit { get; set; }
    
        public string OfficePermitId { get; set; }
    }
    

    【讨论】:

    • 这就是我目前拥有的。我想要的是在Permit 对象上拥有Tasks 导航属性,而不必通过许可的OfficePermits 导航属性检索许可的任务。还是谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多