Entity Framework: An error occurred while updating the entries

asp.net-mvc c# entity-framework

Question

I know there's a lot of questions about it but i've read like 20 of them and couldn't find answer for me. I have this error

"An exception of type 'System.Data.Entity.Infrastructure.DbUpdateException' occurred in EntityFramework.dll but was not handled in user code

Additional information: An error occurred while updating the entries. See the inner exception for details."

When I go to InnerException it says

"Invalid object name 'dbo.Samochodies'."

. I don't know what the hell is this because i don't have any 'Samochodies' in my program.. Anyway, that's the code:

CarsController.cs

public ActionResult Create([Bind(Include = "Id,Brand,Model,Price,Bought,Sold")] Samochody car)
    {
        if (ModelState.IsValid)
        {
            baza.Cars.Add(car);
            baza.SaveChanges(); //error here
            return RedirectToAction("Index");
        }
        return View(car);
    }

Samochody class

public class Samochody
{
    public int Id { get; set; }
    public string Brand { get; set; }
    public string Model { get; set; }
    public decimal Price { get; set; }
    public DateTime Bought { get; set; }
    public DateTime Sold { get; set; }

    public class CarDBCtxt : DbContext
    {
        public DbSet<Samochody> Cars { get; set; }
    }
1
2
12/15/2016 8:26:07 PM

Accepted Answer

When you work with an existing DB, if you don't specify the table name with you're mapping your entity, then EF will try to find by convention a table named Samochodies in your DB. One solution could be using Table attribute to specify the real table name:

[Table("YourTableName")]
public class Samochody
{
  //...
}

Now, maybe the exception is because you changed the name of your entity. To case like this EF has some initializers that could help you to solve this kind of issue every time you change the model, in your case it would be:

public class CarDBCtxt : DbContext
{
    public DbSet<Samochody> Cars { get; set; }

    public CarDBCtx(): base("CarDBCtxt") 
    {
      Database.SetInitializer(new DropCreateDatabaseIfModelChanges<CarDBCtxt>());  
    }
}

If you want to learn more about initializers, take a look this link.

1
12/15/2016 8:45:49 PM

Popular Answer

This answer helped me from Koskilla :

Modifying my Model to use nullable DateTime -typed objects (Nullable? -type) solved the issue. So, in short, to resolve the error “The conversion of a datetime2 data type to a DateTime data type resulted in an out-of-range value”, change the DateTime properties in your Model to DateTime?.

Example:

// "Nullable DateTime", DateTime?, won't throw an error in the cast in EF
public DateTime? StartDate { get; set; }

And there you go!



Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow