Pourquoi EF propriété de navigation de retourner la valeur null?
J'ai deux modèle
1)
public class Indicator
{
public long ID { get; set; }
public string Name { get; set; }
public int MaxPoint { get; set; }
public string Comment { get; set; }
public DateTime DateChanged { get; set; }
public DateTime DateCreated { get; set; }
public virtual IList<CalculationType> CalculationTypes { get; set; }
public virtual IList<TestEntity> TestEntitys { get; set; }
public virtual IndicatorGroup IndicatorGroup { get; set; }
}
2)
public class CalculationType
{
public long ID { get; set; }
public string UnitName { get; set; }
public int Point { get; set; }
public DateTime DateCreated { get; set; }
public DateTime DateChanged { get; set; }
public virtual Indicator Indicator { get; set; }
public virtual IList<Сalculation> Calculations { get; set; }
}
J'ai l'exécution de ce code
var indicator = DataContext.Indicators.FirstOrDefault(i => i.ID == indicatorID);
var test = DataContext.CalculationTypes.FirstOrDefault();
première ligne de retourner la valeur null sur une propriété de navigation CalculationTypes
Deuxième ligne de retour à vide de la collection. Pourquoi?
Mise à JOUR
instantané de base de données
lien de projet https://github.com/wkololo4ever/Stankin
ajouté le Calcul
public class Сalculation
{
public long ID { get; set; }
public virtual CalculationType CalculationType { get; set; }
public virtual ApplicationUser Creator { get; set; }
}
Avez-vous désactivé le Chargement Paresseux?
LazyLoading activé
Je suppose que l'affichage de votre processus d'aide
je l'ai chargé de projet sur github.com/wkololo4ever/Stankin
cela peut aider stackoverflow.com/q/4069563/1236044
LazyLoading activé
Je suppose que l'affichage de votre processus d'aide
je l'ai chargé de projet sur github.com/wkololo4ever/Stankin
cela peut aider stackoverflow.com/q/4069563/1236044
OriginalL'auteur kriper | 2015-03-26
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Si DbContext.La Configuration.ProxyCreationEnabled est définie sur false, DbContext ne prendra pas en charge les objets enfants par un parent de l'objet, sauf si il y a la méthode est appelée sur l'objet parent. Réglage DbContext.La Configuration.LazyLoadingEnabled vrai ou faux n'aura pas d'impact sur ses comportements.
Si DbContext.La Configuration.ProxyCreationEnabled est définie sur true, les objets enfants seront chargés automatiquement, et DbContext.La Configuration.LazyLoadingEnabled de la valeur de contrôle lorsque l'enfant objets sont chargés.
Je pense que c'est le problème:
Essayer à cette et assurez-vous que la clé étrangère est corrigé.
J'ai vu la seconde des photos, il de retour à vide de la liste, avez-vous données?
Je n'ai pas les données pour que. Quand j'ai les données, alors qu'ils sont chargés immédiatement. Je ne comprends pas pourquoi ne pas travailler le chargement paresseux.
Vous semblez être un malentendu chargement paresseux comme le contraire de ce qu'elle est réellement. Paresseux, des moyens de chargement de vos données est chargé automatiquement lorsque vous accédez à une propriété de navigation.
Généralement, les données ne sont pas chargées, quand je regarde les propriétés par le biais de "fenêtre d'observation" dans visual studio.
OriginalL'auteur Toan Nguyen
1) Est un Chargement différé activé? Si non, vous avez besoin de charger explicitement vos propriétés de navigation avec le".Inclure la " syntaxe.
2) Êtes-vous sûr EF devrait être capable de détecter qu'une relation? Avez-vous utiliser le Code ou Première Base de données?
Edit: 3) Êtes-vous sûr il y a des données dans votre base de données et que la clé étrangère de l'Indicateur de IndicatorGroup a une valeur pour cet enregistrement spécifique? Je dis cela parce que la valeur "null" est valide si il n'y a tout simplement pas de données.
P. S. Si vous ne voyez pas une clé étrangère sur l'Indicateur appelé "IndicatorGroupId", il y a peut-être une "IndicatorId" sur la table "IndicatorGroup", dans lequel cas de celle - ci le nom que vous avez fourni votre base de données est mal configuré et vous aurez besoin d'utiliser couramment de syntaxe ou d'attributs de données à charger EF sur la façon de rendre les clés étrangères.
3) j'ajoute instantané databse données dans mon post.
OriginalL'auteur Moeri
Check this out: Propriété De Navigation Avec Le Premier Code . Il mentionne sur le pourquoi de la navigation de la propriété est null et les solutions.
OriginalL'auteur Kenny Eng
Même comportement, mais d'autre cause que la réponse choisie:
Propriété de Navigation peut également être null si vous avez désactivé le
myContext.Configuration.AutoDetectChangesEnabled
Très évident, mais cela m'a fait quand j'ai été la mise en œuvre de certaines améliorations des performances.
OriginalL'auteur GraehamF