J'ai modèle avec 2 DateTime
propriétésDifférence entre deux propriétés datetime dans le modèle (C#)
Voici le code
sing System.ComponentModel.DataAnnotations.Schema;
namespace GoogleMapsAsp_Net.Models
{
using System;
using System.Collections.Generic;
public partial class Park
{
public int parkId { get; set; }
public decimal Longitude { get; set; }
public decimal Latitude { get; set; }
public Nullable<System.DateTime> TimeStart { get; set; }
public Nullable<System.DateTime> TimeEnd { get; set; }
[NotMapped]
public TimeSpan? Difference { get { return TimeStart - TimeEnd; } }
}
}
Je veux calculer la différence entre les deux en quelques minutes et écrire la différence dans la nouvelle propriété. J'ai donc écrit cette propriété
public TimeSpan? Difference { get { return TimeStart - TimeEnd; } }
Mais quand je lance projet, je cette erreur
« Le membre type spécifié « différence » ne sont pas pris en charge dans LINQ to Entities. Seuls les initialiseurs, les membres d'entité et les propriétés de navigation d'entité sont pris en charge. '
Voici ma méthode sur arrière où je tente de prendre la différence de propriétés du modèle
public JsonResult GetPlaces()
{
using (var ctx = new GoogleMapsAsp_NetContext())
{
const int coeff = 2;
var items = ctx.Parks.Select(
x => new
{
lng = x.Longitude,
lat = x.Latitude,
difference = x.Difference
}
).ToList();
return Json(items.ToArray(), JsonRequestBehavior.AllowGet);
}
}
Comment puis-je calculer correctement
Utilisez un modèle de vue - cette propriété ne doit pas faire partie de votre modèle de données –
utilisez-vous la propriété 'Difference' dans une clause' Where'? Si oui, vous pouvez compter sur l'une des fonctions System.Data.Entity.DbFunctions.Diff * au lieu de 'Difference' – jbl
Il n'est pas clair pourquoi vous voudriez calculer la différence au niveau de la base de données. Est-il impliqué dans un 'OrderBy', avec un' Take? impliquant coeff? – jbl