0
我有两个元素Sfera和Contenuti之间的N-N关系。如何处理实体框架.NET 3.5中的N-N关系
在特别基金项目我看到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 };
}
如果我看看我的数据库,它会很好地存储我在右边的“NN”表中的两个元素之间的关系....但是当我尝试访问元素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永远是真的,或者对于至少一条记录是真的吗?另外,您确定IDSfera的值是否等于至少一条记录中的PK_Sfera的值?而且这两个条件在至少一个记录中都是正确的? – 2012-04-12 15:17:38
是的,我敢肯定...你可以在代码中看到,如果sfere为空(所以没有与Attiva == true匹配的结果,ID等于我的参数),会引发异常并且其他代码无法访问! – 2012-04-12 15:22:21
我看不到引发异常的代码。我们正在查看相同的代码吗? – 2012-04-12 15:32:42