J'ai un aperçu de la dernière version du code EF via ce tutoriel - http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs mais je suis un peu confus à propos d'un aspect et je me demande si quelqu'un pourrait faire la lumière dessus? Pour expliquer - il y a une classe appelée "Site" que je veux avoir un champ appelé "HomePageId" qui devrait ensuite correspondre à l'objet "SitePage" avec cet Id. Semble assez simple? Mais quand EF crée le Db et les relations, cela ne semble pas le comprendre. Je suis sûr que c'est quelque chose que je fais mal - voici le code:Problème d'association de clé étrangère automatique du code EF
public class Site
{
public int SiteId { get; set; }
public string SiteName { get; set; }
public string SiteUrlPortion { get; set; }
// Relationship - SitePages
public virtual ICollection<SitePage> SitePages { get; set; }
// Relationship - HomePage
public int HomePageId { get; set; }
public virtual SitePage HomePage { get; set; }
}
public class SitePage
{
public int SitePageId { get; set; }
public string SitePageTitle { get; set; }
public string SitePageUrlPortion { get; set; }
// Relationship - Site
public int SiteId { get; set; }
public virtual Site Site { get; set; }
}
La classe « SitePage » génère la relation de retour à « Site », comme on peut s'y attendre. Mais ce que j'ai en termes de colonnes dans les deux tableaux non seulement n'a pas de sens, mais la relation du côté du code des choses ne fonctionne pas comme prévu. (Par exemple, quand je donne un "HomePageId" au "Site", le "HomePage" du site est nul.)
De toute évidence, il y a peu de documentation là-dessus, car elle est encore en développement, mais je me demandais si quelqu'un avait des idées? Ai-je besoin de commencer à décorer les propriétés avec des attributs? Ou est-ce que je lui demande de comprendre quelque chose qu'il ne le fera jamais ?!
Rob
Salut, merci pour la réponse. Je sais ce que vous dites mais ensuite je vais devoir faire une autre requête comme "sitePages.Single (p => p.SitePageid == this.HomePageId)" quelque part - peut-être dans la classe d'entité HomePage elle-même qui me dérange - Je vais essayer quand même! – LiverpoolsNumber9
Et en fait cela jette l'erreur - "Il y a déjà un DataReader ouvert associé à cette commande qui doit être fermé en premier.". La réponse peut être de créer une entité distincte appelée "HomePages". Je vais essayer ça maintenant. – LiverpoolsNumber9
Vérifiez également que la chaîne de connexion MultipleActiveResultSets est définie sur true. –