2016-12-15 64 views
0

我知道有很多關於它的問題,但我已經閱讀了其中的20個,並且找不到對我的答案。我有這樣的錯誤實體框架:更新條目時發生錯誤

「的類型 ‘System.Data.Entity.Infrastructure.DbUpdateException’發生在 EntityFramework.dll異常,但在用戶代碼

其他信息沒有處理:發生錯誤同時更新條目 有關詳細信息,請參閱內部例外。「

當我去的InnerException它說

「無效的對象名稱dbo.Samochodies'。」

。我不知道這到底是什麼,因爲我並不在我的計劃有任何「Samochodies」 ..無論如何,這是代碼:

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類

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; } 
    } 
+0

'dbo.Samochodies'是EF試圖在你的數據庫中映射的表名。什麼是表 – octavioccl

+0

的真名我沒有指定它,即時通訊使用Code First(我認爲?:D),但也許我做錯了 –

+0

因此,你確定你的數據庫不存在嗎? – octavioccl

回答

0

當您使用現有的數據庫時,如果您未指定表名與映射您的實體,那麼EF將嘗試按照慣例在數據庫中查找名爲Samochodies的表。一種解決方案可以使用Table屬性來指定真正的表名:

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

現在,也許該異常是因爲你改變了你的實體的名稱。爲了區分這樣的EF有一些初始化,可以幫助你在每次改變模型的時間解決這類問題,你的情況這將是:

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

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

如果您想了解更多關於初始化,取看這link

+0

它顯示錯誤「方法必須有返回類型」在CarDbCtx,意外的令牌「:」,並且DropCreateDatabaseIfModelChanges需要1個類型參數 –

+0

也許這是因爲mdf文件沒有出現在AppData文件夾中?在教程中它是在那裏所有這個代碼 –

+0

我忘了'DropCreateDatabaseIfModelChanges'是通用的 – octavioccl