EF CTP 5 создает и сохраняет проблемы с графом объектов - PullRequest
0 голосов
/ 20 декабря 2010

Код:

Something smt = new Something(){
Prop = 123,
Prop2 = "asdad"
}

foreach(var related in relatedsomething)
{
    smt.Related.Add(new Related(){
    relatedprop = 123,
    };
}

Время выполнения выдает ошибку об отсутствии ссылки.С этим связана виртуальная коллекция.не определены поля внешнего ключа в объектах.

наоборот, если я сделаю

foreach(var related in relatedsomething)
{
db.Related.Add(new Related(){
    relatedprop = 123,
    Something = smt
    };
}

Это работает.
Хотя, я хочу, чтобы оно работало так же, как в первом фрагменте.
AmЯ что то не так делаю?Потому что в поставляемом EF4 это работает в обе стороны.

классы моделей (соответствующая часть):

public class Printer
{
    public int Id { get; set; }
    public string  Name { get; set; }
    public virtual ICollection<Replica> Replicas { get; set; }


}
public class Replica
{
    public int Id { get; set; }
    public virtual Printer Printer { get; set; }


}


public class PrintersContext: DbContext
{
    public DbSet<Printer> Printers { get; set; }
    public DbSet<Replica> Replicas { get; set; }

}

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

С первым кодом вы должны инициировать свои коллекции в конструкторе.

 class printer
 {
   public virtual ICollection<replica> replicas {get;set;}
    public printer{
      replicas = new HashSet<replica>();
    }
 }

и все снова будет работать волшебным образом.

0 голосов
/ 21 декабря 2010

Я думаю, что мог столкнуться с той же проблемой. Я опубликовал в MSDN , но не получил ответа.

Это, вероятно, ошибка в EF, с которой вам приходится жить и обходиться.

...