'System.Data.Entity.Infrastructure.DbUpdateException' occurred in EntityFramework.dll
Solution 1
If you need to update Row if already Exists in database so dont use context.Add();you can use as follows.
var overlaydb1 = new overlayData
{
DeviceId = "1111",
TimestampUTC = new DateTime(2000, 2, 2, 10, 10, 10),
OverlayData1 = "seconed seconed seconed "
};
try
{
db.overlayData.Attach(overlaydb1);
db.ObjectStateManager.ChangeObjectState(overlaydb1, EntityState.Modified);
db.SaveChanges();
}
catch (Exception ec)
{
Console.WriteLine(ec.Message);
}
Solution 2
This same Error is also appear when user forget to add Primery key
in particular table .. and then add data through application.
Solution 3
I think the problem is the type of your datetime. sqlsever has more than one datetime. if you check your inner exception, you may see the type that you are trying to put in your table and the type it actually needs. conversion cant be done automatically and you should change it in the table or convert it in your code. it can be datetime, datetime2 (7), etc.
user2656851
Updated on August 07, 2022Comments
-
user2656851 over 1 year
I wrote a rather simple code (client server based on WCF and Windows form). i was trying to update the db so that i could test my code and i encounterd the above exception. Any ideas how to solve it?
// For testing public void updateTable() { using (var db = new overlayDBEntities()) { var overlaydb = new overlayData { DeviceId = "1111", TimestampUTC = new DateTime(1990, 1, 1, 9, 9, 9), OverlayData1 = "Random Text" }; db.overlayData.Add(overlaydb); try { db.SaveChanges(); } catch(Exception ex) { Console.WriteLine(ex.Message); } var overlaydb1 = new overlayData { DeviceId = "1111", TimestampUTC = new DateTime(2000, 2, 2, 10, 10, 10), OverlayData1 = "seconed seconed seconed " }; db.overlayData.Add(overlaydb); try { db.SaveChanges(); } catch (Exception ec) { Console.WriteLine(ec.Message); } } }
-
Cthulhu almost 9 yearsHi, welcome to StackOverflow. Please don't post links as answers. If the page disappears, your answer becomes useless. Use the information to build your answer and use the link as reference only. Thanks.