La conversion vers le type de la valeur à cause du manque de matérialisée valeur est null

Je suis en utilisant AutoMapper à mon projet entités de modèles.

Ce sont les modèles que j''mm de cartographie et de:

public partial class Material
{
    public System.Guid Id { get; set; }
    public string Description { get; set; }
    public string EAN { get; set; }

    public virtual InventoryLine InventoryLine { get; set; }
}

public partial class InventoryLine
{
    public System.Guid MaterialId { get; set; }
    public Nullable<decimal> Quantity { get; set; }
    public decimal Price { get; set; }
    public Nullable<System.DateTime> LastInspectionDate { get; set; }
    public int TransactionsSinceLastInspection { get; set; }

    public virtual Material Material { get; set; }
}

public class InventoryLineViewModel
{
    public string EAN { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
    public decimal? Quantity { get; set; }
    public DateTime? LastInspectionDate { get; set; }
}

J'ai cette cartographie:

CreateMap<Material, InventoryLineViewModel>().ForMember(d => d.Price, o => o.MapFrom(s => s.InventoryLine.Price)).ForMember(d => d.Quantity, o => o.MapFrom(s => s.InventoryLine.Quantity)).ForMember(d => d.LastInspectionDate, o => o.MapFrom(s => s.InventoryLine.LastInspectionDate));

Chaque fois que j'exécute ce code:

Mapper.Initialize(c => { c.AddProfile(new MapperProfile()); });
return context.Material.Include(i => i.InventoryLine).ProjectTo<InventoryLineViewModel>().ToList();

J'obtiens cette erreur:

La distribution de valeur de type 'System.Virgule' a échoué parce que la matérialisée valeur est null. Le résultat de ce type de paramètre générique ou la requête doit utiliser un type nullable.

Comment est-ce possible quand tous les types que je suis de cartographie et de sont du même type? J'ai même essayé de faire le Quantity propriété d'un non-valeurs null dans la base de données et du modèle. J'obtiens toujours la même erreur.

Toute aide est très appréciée 🙂

  • Quel est le type de la relation entre Material et InventoryLine? Je veux dire, c'est one-to-one, mais dont l'extrémité est obligatoires et facultatifs. Tout couramment configuration?
  • Le matériel est nécessaire et InventoryLine est facultatif. Pas couramment la configuration 🙂
  • Peut-être un peu hors-sujet, mais je vous conseille valueinjecter que votre mapper plugin au lieu de cela, beaucoup mieux que AutoMapper, à mon avis honnête.
  • Pas vraiment une réponse, mais vous pouvez trouver que cela vaut la peine de lire: devtrends.co.royaume-uni/blog/...