0

コード:

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

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

ランタイムで null 参照に関するエラーが表示されます。関連はバーチャルアイコレクション。エンティティに外部キー フィールドが定義されていません。

逆に私がそうするなら

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

できます。
ただし、最初のスニペットのように機能させたいです。
私は何か間違ったことをしていますか?出荷された 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; }

}
4

2 に答える 2

0

コードを最初に使用すると、コンストラクターでコレクションを開始する必要があります。

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

そして、それはすべて魔法のように再び機能します。

于 2012-02-25T19:59:09.390 に答える
0

同じ問題に遭遇した可能性があると思います。MSDN に投稿しましたが、応答がありませんでした。

これはおそらく EF のバグであり、対処して回避する必要があります。

于 2010-12-21T16:33:01.007 に答える