Enregistrer la liste de base de données entity framework
J'ai le code suivant:
internal static bool SaveUOSChangeLog(List<Contracts.DataContracts.UOSChangeLog> values, string user)
{
try
{
using(var ctx = new StradaDataReviewContext2())
{
values.ForEach(u => { u.Username = user; u.Changed = DateTime.Now; });
var test = ctx.UOSChangeLog.Add(values);
ctx.SaveChanges();
return true;
}
}
La chose que je veux faire Est de sauver values
à la base de données. Cependant, je reçois un message d'erreur suivantes:
Voici mes Contrats.DataContracts.UOSChangeLog:
public int? Id { get; set; }
public int Accident_nr { get; set; }
public int Refnr { get; set; }
public int Action { get; set; }
public string Old_data { get; set; }
public string New_data { get; set; }
public DateTime SearchedFromDate { get; set; }
public DateTime SearchedToDate { get; set; }
public DateTime Changed { get; set; }
public string Username { get; set; }
public string Comment { get; set; }
Et voici mes Services.StradaDataReview2Model.UOSChangeLog qui sont utilisés comme un DbSet
[Table("UOSChangeLog")]
public partial class UOSChangeLog
{
[Required]
public int? Id { get; set; }
public int Accident_nr { get; set; }
[Required]
public int Refnr { get; set; }
[Required]
public int Action { get; set; }
[Required]
public string Old_data { get; set; }
[Required]
public string New_data { get; set; }
[Required]
public DateTime SearchedFromDate { get; set; }
[Required]
public DateTime SearchedToDate { get; set; }
[Required]
public DateTime Changed { get; set; }
[Required]
public string Username { get; set; }
[Required]
public string Comment { get; set; }
}
vous essayez d'ajouter une nouvelle Liste de classe spécifiée (les valeurs d'une Liste) plutôt qu'une instance spécifique
Hm, okey, et comment dois je faire alors?
Hm, okey, et comment dois je faire alors?
OriginalL'auteur Bryan | 2016-03-17
Vous devez vous connecter pour publier un commentaire.
Vous essayez d'ajouter une liste avec les
Add
méthode qui prend un seul objet, il suffit de le garder simple et d'utiliser un foreach:Il suffit d'utiliser un simple foreach, linq est un langage d'interrogation, et non une modification du langage.
C'est la meilleure option, en utilisant linq foreach vous n'êtes pas vraiment gagner quelque chose
Salut à nouveau, je reçois toujours le même message d'erreur lorsque vous faites comme vous le faites.
est de type
UOSChangeLog
droit? Pouvez-vous copier le message d'erreur?Ils sont de différents types. Vos valeurs sont de
Contracts.DataContracts
espace de noms, et votre objectcontext estStrada.DataReview...
espace de noms. Vous aurez à créer l'objet à ajouter (de laStrada
espace de noms).OriginalL'auteur Alexander Derck
Vous pouvez utiliser l'Entity Framework .AddRange méthode pour ajouter une collection d'objets de votre base de données.
MSDN
Elle ressemblera:
Liste<T> implémentant IEnumerable MSDN - msdn.microsoft.com/en-us/library/6sh2ey19(v=vs. 110).aspx -- Débordement de Pile - stackoverflow.com/questions/4700613/...
Ah okey. Mais j'ai Toujours le même message d'erreur décrit Dans ma question.
Question stupide: votre contexte n'héritent DbContext, correct?
Si j'ai de la Liste d'appels.Clear() après AddRange, la db ont encore les données?
OriginalL'auteur Dan Orlovsky
Veuillez utiliser addrange méthode.
OriginalL'auteur Ellix4u