Je l'insertion d'une nouvelle ligne à la table de base de données en utilisant Entity Framework, mais mon problème est que la colonne ValidFromDate
provoque une exceptionEn utilisant Entity Framework pour insérer une ligne à une table qui a une clé composite
La propriété « ValidFromDate » fait partie des informations clés et ne peut pas être la date de modification
Notre base de données DBA a défini de l'objet et de l'image ci-dessous est l'instantané du fichier EDMX. ValidFromDate
est une colonne datetime.
L'idée du FarmAnimal
est de suivre l'histoire de l'endroit où certains animaux ont été. Par conséquent AnimalId
etValidFromDate
provoque la ligne à être unique.
Maintenant, la question est de savoir comment puis-je insérer une nouvelle ligne à la table qui a ce genre de schéma?
Insérer l'aide Entity Framework
var farmAnimal = new FarmAnimal {
AnimalId = insert.AnimalId,
ValidFromDate = insert.ValidFromDate // exception comes from this line,
etc.
};
entities.FarmAnimals.Add(farmAnimal);
Mise à jour: StackTrace
at System.Data.Objects.EntityEntry.DetectChangesInProperties(Boolean detectOnlyComplexProperties)
at System.Data.Objects.ObjectStateManager.DetectChangesInScalarAndComplexProperties(IList`1 entries)
at System.Data.Objects.ObjectStateManager.DetectChanges()
at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
at System.Data.Entity.DbSet`1.Add(TEntity entity)
at xxx.Repositories.PairingRepository.UpdateFarmAnimals(IEnumerable`1 updates, IEnumerable`1 inserts) in xxx
at xxx.Services.PairingService.RemovePairingAnimals(List`1 animalIds) in xxx
at xxx.Controllers.PairingController.RemovePairingAnimals(List`1 animalIds) in xxx
at lambda_method(Closure , ControllerBase , Object[])
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
Mise à jour 2: Les fichiers Entity Framework
J'ai ajouté trois fichiers fichiers de mappage Entity Framework/générateurs EDMX fichier ADO.NET DbContext Générateur ADO.NET EntityObject Générateur (POCO de)
À quel moment l'exception se produit-elle? L'un des setters, la méthode ObjectSet.Add, lorsque vous enregistrez les modifications? Pouvez-vous poster la trace de la pile? – cynic
@cynic Voir le commentaire sur le bloc de code source. Je vais obtenir la trace de la pile maintenant. Merci pour votre temps. – Tx3
Je vois que vous utilisez la couche wrapper DbSet/DbContext. Les entités POCO sont-elles ou sont-elles générées avec toute la logique de suivi des changements? – cynic