0
2つの要素SferaとContenutiの間にN-N関係があります。Entity FrameworkでN-N関係を処理する方法.NET 3.5
私はContenutiエンティティ・セットを参照してくださいとContenutiに私はスフェラ・セットを参照してくださいスフェラ項目で..
私はコードで新しい項目を追加すると私は同じような構造を使用します。
using (IndexDB DB = new IndexDB())
{
try
{
var newContenuto = new Contenuto();
newContenuto.Cancellato = false;
newContenuto.PK_Content_ID = tt_content_id;
newContenuto.URL = URL;
foreach(long sphere in SphereID)
{
try
{
var sfere = from sfera in DB.Sfera where sfera.PK_Sfera == sphere select sfera;
newContenuto.Sfera.Add(sfere.First());
sfere.First().Contenuto.Add(newContenuto);
}
catch (Exception exc)
{
return new StandardResponse() {Success = false, Message = exc.Message};
}
}
DB.AddToContenuto(newContenuto);
DB.SaveChanges();
return new StandardResponse() {Success = true};
}
catch (Exception e)
{
return new StandardResponse() { Success = false, Message = e.Message + e.StackTrace };
}
私のDBを見てみると、右側の "NN"テーブルの2つの要素の間の関係がうまく保存されています....しかし、Contenuto.SferaとSfera.Contenuto要素にアクセスしようとすると、常に空集合になります。
アクセスするには、次のようにしてください:
using (IndexDB DB = new IndexDB())
{
var sfere = from sfera in DB.Sfera where sfera.PK_Sfera == IDSfera && sfera.Attiva select sfera;
if (!sfere.Any())
{
response.Add(new UrlResponse() { Success = false, ErrorMessage = "" });
}
var sferaSelezionata = sfere.First();
//HERE sferaSelezionata.Contenuto.Count == 0 even if on DB there are MANY "connections"
}
}
どのように私はこれを扱うことができますか?
ありがとうございました!
sferra.Attivaは常にtrueですか、少なくとも1つのレコードでtrueですか?また、少なくとも1つのレコードでIDSferaの値がPK_Sferaの値と等しいことを確認してください。そして、これらの条件の両方が少なくとも1つのレコードに当てはまりますか? –
はい私は確信しています...もしあなたがコードが空であれば、Attiva == trueとIDとが一致していて、IDが自分のパラメータと一致していないことがわかります)例外SHが発生し、他のコードに到達できません! –
例外が発生するコードはありません。私たちは同じコードを見ていますか? –