【问题标题】:Navigation properties in domain classes without EF没有 EF 的域类中的导航属性
【发布时间】:2014-06-12 14:18:50
【问题描述】:

我的ElementGroup 类有一个Elements 属性,它的类型是List<Element>。要启用导航回其父 ElementGroup,我的 Element 类有一个 ElementGroup 属性,其类型为 ElementGroup。通常我会使用 Entity Framework 中的导航属性来设置它,但我想在添加数据层之前在我的域层中临时设置它。这是怎么做到的?

这种方法似乎有效,但它需要我的 ElementGroup 对象的局部变量:

ElementGroup eg = new ElementGroup("Dummy Name", 100);
competition.ElementGroups.Add(eg);
eg.Elements.Add(new Element(new DateTime(2014, 9, 14, 12, 0, 0)) { ElementGroup = eg });
eg.Elements.Add(new Element(new DateTime(2014, 9, 14, 13, 0, 0)) { ElementGroup = eg });

我想知道是否有一种方法可以在不创建局部变量的情况下执行以下操作:

competition.ElementGroups.Add(new ElementGroup("Dummy Name", 100)
{
  Elements = new List<Element> {
    new Element(new DateTime(2014, 9, 14, 12, 0, 0)) { },
    new Element(new DateTime(2014, 9, 14, 13, 0, 0)) { }
  }
});

我不确定如何使用对象初始值设定项大括号或其他一些技术将当前的 ElementGroup 分配给新的 Element 的 ElementGroup 属性。

【问题讨论】:

    标签: c# entity-framework navigation-properties


    【解决方案1】:

    在ElementGroup 中创建一个AddElement 方法:

    public Element AddElement(DateTime datetime)
    {
        var element = new Element(datetime) { ElementGroup = this };
        this.Elements.Add(element);
        return element;
    }
    

    【讨论】:

    • 如何在应用程序代码中使用这种方法?例如,假设我想在一条语句中添加一个 ElementGroup 和三个 Element(不创建局部变量)。
    • 为什么一条语句对您如此重要?我不明白如何在没有至少一个局部变量的情况下创建具有相互引用的对象。
    • 这很重要,因为我正在努力学习,当我编写代码时,我感觉可能有一种更优雅的方式来做我想做的事情。
    猜你喜欢
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2022-07-18
    相关资源
    最近更新 更多