Entity Framework Code First Propriétés Calculées
Je suis à l'aide de Entity Framework Code First" de la démarche à l'ASP.NET MVC 3 l'application web. Dans ma base de données j'ai plusieurs colonnes calculées. J'ai besoin d'utiliser ces colonnes pour l'affichage des données (qui fonctionne correctement).
Cependant, lorsque j'arrive à insérer des lignes dans cette table, j'obtiens l'erreur suivante:
La colonne "ChargePointText" ne peut pas être
modifié parce que c'est soit une
colonne calculée ou est le résultat d'une
Opérateur UNION.
Est-il un moyen de marquer la propriété readonly dans ma classe?
public class Tariff
{
public int TariffId { get; set; }
public int Seq { get; set; }
public int TariffType { get; set; }
public int TariffValue { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public int ChargePoint { get; set; }
public string ChargePointText { get; set; }
}
- Oui, vous avez raison, ma réponse était incorrecte. Il ne fonctionne que si vous voulez EF pour générer la base de données. Post mise à jour de votre réponse et de l'accepter.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution. Entity Framework fournit une annotation de données appelé DatabaseGenerated. L'utiliser comme ceci:
Obtenir plus de détails ici: http://msdn.microsoft.com/en-us/library/gg193958.aspx
Il ya un couple d'autres options aussi bien.
La première consiste à modifier la configuration de la propriété dans le fichier de mappage à partir de:
à:
C'est à peu près le même que Même Huggill de solution, sauf qu'il garde cette configuration dans la cartographie, plutôt que dans le modèle. J'ai l'impression que c'est un peu mieux depuis le mappage de classe contient déjà le code pour dire Entity Framework comment charger ce type d'entité, de sorte que le fait de savoir qu'un champ est calculé appartient là.
Une autre option est le
NotMappedAttribute
qui peut être appliquée aux propriétés d'une entité comme suit:C'est utile lorsque l'entité contient des propriétés qui ne sont pas remplis à partir de la base de données, mais il devrait être tout aussi utile dans le scénario rencontrés par les OP, c'est à dire, EF ne pas essayer de pousser la valeur d'une propriété marquée avec le
NotMappedAttribute
, donc insérer devrait fonctionner.