English 中文(简体)
如何在Linq增加次级?
原标题:How to add sub-entities in Linq to SQL?
  • 时间:2009-09-30 12:14:52
  •  标签:

I have two Linq2SQL objects, Order and OrderLine. An Order contains multiple OrderLines.

我设立了建筑令(保留)。 想法是,该建筑商会产生新的秩序和它应当包含的条理。

我有这一法典:

public Order(Reservation reservation)  {
    this.date = DateTime.Now;
    this.Reserveration = reservation;

    OrderLine orderLine = new OrderLine(reservation);
    //this.attach_Orderlines(orderLine);
    this.Orderlines.Add(orderLine);
}

this.Orderlines.Add(orderLine) results in a NullReferenceException. 当我打电话this.attach_Orderlines(orderLine)时,情况也是如此。

我的猜测是,我首先应拯救<条码>Order,但我应如何这样做? I m 不要从我的数据背景中发出命令(其中包含一项节省职能)。

最佳回答

(请注意:我已根据评论中所作的澄清,彻底改变了我的回答——请见原始答复的历史>。

在对该问题的评论中进行了一些讨论,随后作了澄清,因此,我喜欢,因为你正在创建自己的建筑商,所以你没有将订单标的物的所有权初步化。

请注意,在命令的违约(参数)构造者中,应当有一条编码线,首先确定命令实体财产。 类似:

public Order()
{
    this._Orderlines = new EntitySet<Orderlines>(new Action<Orderline>(this.attach_Orderline), new Action<Orderline>(this.detach_Orderline));
    OnCreated();
}

您的新建筑商,如果被叫的话,似乎不会创建内部<代码>。 实体Set<T>通过<代码>暴露的物体。 Orderlines property. 这似乎解释了您作为自己的建筑者所经历的“NullReferenceException,也没有重复“骑士”令状的初始化。

实现这一目的的最佳途径是“链”你的建筑商,使你超负荷的建筑商,如果使用<代码> 保留,作为参数,首先称作违约(参数)构造者,从而可以进行这种初步化。 实现这一点的方法包括:

public Order(Reservation reservation) : this() 
{
   this.date = DateTime.Now;
   this.Reserveration = reservation;

   OrderLine orderLine = new OrderLine(reservation);
   //this.attach_Orderlines(orderLine);
   this.Orderlines.Add(orderLine);
}

页: 1 Orderline Orderline = new OrderLine (reservation) line of Code do not rebol!

问题回答

确保你开始这样做。 命令。 它需要一种新的收集,然后才能补充。

public Order(Reservation reservation)  {
    this.date = DateTime.Now;
    this.Reserveration = reservation;

    OrderLine orderLine = new OrderLine(reservation);
    //this.attach_Orderlines(orderLine);
    this.Orderlines = new List<OrderLine>();
    this.Orderlines.Add(orderLine);
}

您应在<条码>中添加构造逻辑。





相关问题
热门标签