Essayer d'insert une ligne dans ma database en utilisant Entity Framework. J'affecte toutes les valeurs lors de l'insertion sauf ID, qui est la key primaire, et je voudrais qu'il soit auto-incrémenté par la database SQL Server.
Ma définition / class de table:
public partial class T_SurfacePick { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int ID { get; set; } public int? BoreholeID { get; set; } public int? AuthoredNameID { get; set; } public int? LoadFormat { get; set; } public double? PickDepth { get; set; } public int? OwningAuthorID { get; set; } public int? QualityID { get; set; } public double? CustomData { get; set; } }
Lorsque j'appelle la méthode SaveChanges()
, j'obtiens une erreur
Impossible d'insert la valeur NULL dans la colonne "ID"
- Renvoie le nombre de lignes supprimées d'une seule command dans une procédure stockée
- Comment vérifier l'logging existe dans le groupe par sous-requête dans linq à sql
- Le mappage Entity Framework exclut les colonnes de la table
- jointure de plusieurs tables optimisant les performances
- Deux erreurs courantes empêchent ce site Web de fonctionner correctement
Comment puis-je get cette colonne pour auto-incrémenter elle-même? Je ne voudrais pas avoir à me soucier de garder une trace de l' ID
et de l'assigner moi-même.
J'essaie d'utiliser l'approche du code d'abord. Voici un exemple d'une partie de mon tree de décision pour les insertions / mises à jour:
if (MenefeePick == null) // New top { var Pick = new T_SurfacePick { BoreholeID = Wellbore.ID, AuthoredNameID = MenefeeAN.ID, LoadFormat = 1, PickDepth = Menefee, OwningAuthorID = ProgAuthor.ID, QualityID = -1, CustomData = null }; db.T_SurfacePick.Add(Pick); } else // Update top { MenefeePick.PickDepth = Menefee; } db.SaveChanges();
Je qualifierai plus loin en mentionnant que mon model utilise une database existante d'un produit de logiciel.
Définir ID
comme int? ID
int? ID
. Avec ?
la variable acceptera null
.