мой код выглядит следующим образом:
Код: Выделить всё
using (AgpModel model = new AgpModel())
{
Entite.db.commentaire comment = commentaire.toDB();
model.commentaires.Add(comment);
model.SaveChanges();
commentaire.Id = comment.id;
}
Код: Выделить всё
AgpModelToDB() — это метод, преобразующий комментарий в комментарий.
При добавлении моих самых первых данных в таблицу у меня возникает исключение при вызове SaveChanges(), который говорит:
Операторы обновления, вставки или удаления хранилища повлияли на неожиданное количество строк (0). Сущности могли быть изменены или удалены с момента их загрузки. См. http://go.microsoft.com/fwlink/?LinkId=472540 для получения информации о понимании и обработке исключений оптимистического параллелизма.
Я попробовал метод, доступный по ссылке ниже, только для того, чтобы получить это исключение:
OriginalValues нельзя использовать для объектов в состоянии «Добавлено».
Чтение по таблице работает нормально.
Вот дополнительный код, который поможет вам понять:
Метод toDB:
Код: Выделить всё
public db.commentaire toDB()
{
return new db.commentaire() {
id = this.Id,
stagiaire = this.IdStagiaire,
utilisateur = this.IdUtilisateur,
niveau = (int)this.Niveau,
contenu = this.Contenu,
date = this.Date
};
}
Код: Выделить всё
[Table("agp.commentaires")]
public partial class commentaire
{
[Key]
[Column("commentaire", Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int id { get; set; }
[Key]
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int utilisateur { get; set; }
[Key]
[Column("date", Order = 2, TypeName = "smalldatetime")]
public DateTime date { get; set; }
[Key]
[Column(Order = 3)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int stagiaire { get; set; }
[Key]
[Column(Order = 4)]
[StringLength(300)]
public string contenu { get; set; }
[Key]
[Column(Order = 5)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int niveau { get; set; }
public virtual utilisateur utilisateur1 { get; set; }
public virtual Stagiaire Stagiaire1 { get; set; }
}
Запрос передан на SQL Server 2008:
Код: Выделить всё
INSERT [agp].[commentaires]([utilisateur], [date], [stagiaire], [contenu], [niveau]) VALUES (@0, @1, @2, @3, @4)
SELECT [commentaire] FROM [agp].[commentaires] WHERE @@ROWCOUNT > 0 AND [commentaire] = scope_identity() AND [utilisateur] = @0 AND [date] = @1 AND [stagiaire] = @2 AND [contenu] = @3 AND [niveau] = @4
- @0: '1' (Type = Int32)
- @1: '30/07/2015 18:50:02' (Type = DateTime2)
- @2: '1786' (Type = Int32)
- @3: 'coucou' (Type = AnsiString, Size = 300)
- @4: '2' (Type = Int32)
Код: Выделить всё
DECLARE @0 as INT = 1;
DECLARE @1 AS DateTime2 = '30/07/2015 18:50:02';
DECLARE @2 AS int = 1786;
DECLARE @3 AS nvarchar(300) = 'coucou';
DECLARE @4 AS int = 2;
INSERT [agp].[commentaires]([utilisateur], [date], [stagiaire], [contenu], [niveau])
VALUES (@0, @1, @2, @3, @4)
SELECT [commentaire]
FROM [agp].[commentaires]
WHERE @@ROWCOUNT > 0 AND [commentaire] = scope_identity() AND [utilisateur] = @0 AND [date] = @1 AND [stagiaire] = @2 AND [contenu] = @3 AND [niveau] = @4