1

我有一個dropdownlistfor,其值不是來自我的數據庫,當用戶選擇我的數據庫中不存在的值時,我想將它保存到數據庫(和如果它已經存在,我只是使用現有的數據)。在MVC中使用EF中的SaveChanges時出現奇怪的錯誤信息

這項工作細跟我的一些數據(見它不工作代碼)的

這是我的倉庫:

public void newPerson(Person addperson) 
    { 
     db.Person.AddObject(addperson); 
     db.SaveChanges(); //This wont work 
    } 

這裏是我的控制器:

[HttpPost] 
    public ActionResult Create(CreateNKIphase1ViewModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      var goalcard = new GoalCard(); 

      var companyChecker = ""; 
      var dbCompanies = createNKIRep.GetCustomerByName(); 
      var addcustomer = new Customer(); 
      foreach (var existingcustomer in dbCompanies) 
      { 
       companyChecker = existingcustomer.CompanyName; 
        if (existingcustomer.CompanyName == model.CompanyName) 
        { 
         var customerId = existingcustomer.Id; 
         var selectedCustomerID = createNKIRep.GetByCustomerID(customerId); 
         goalcard.Customer = selectedCustomerID; 
         break; 
        } 
      } 
      if (companyChecker != model.CompanyName) 
      { 
       addcustomer.CompanyName = model.CompanyName; 
       createNKIRep.newCustomer(addcustomer); //This works! 
       goalcard.Customer = addcustomer; 
      } 

      if (model.PersonName != null) 
      { 
       var Personchecker = ""; 
       var dbPersons = createNKIRep.GetPersonsByName(); 

       foreach (var existingPerson in dbPersons) 
       { 
        Personchecker = existingPerson.Name; 
        if (existingPerson.Name == model.PersonName) 
        { 
         var personId = existingPerson.Id; 
         var selectedPersonID = createNKIRep.GetByPersonID(personId); 
         goalcard.Person = selectedPersonID; 
         break; 
        } 
       } 
       if (Personchecker != model.PersonName) 
       { 
        Person newPerson = new Person(); 
        newPerson.Name = model.PersonName; 
        createNKIRep.newPerson(newPerson);//Where repository is called 
        goalcard.Person = newPerson; 
       } 
      } 

但是,當我嘗試保存新的Person時,出現以下錯誤消息:

將datetime2數據類型轉換爲日期時間數據類型導致超出範圍值。 該聲明已被終止。

描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

即使Person只有Idname在我的數據庫屬性。

在我的代碼中是否有任何錯誤,或者它是否需要更改我的數據庫中的任何設置?

在此先感謝。

+1

聽起來像是與你的Db對我做的事情。你的Person表是什麼結構?它不包含任何日期時間字段?任何foriegn鍵或觸發器? – Liam

+0

它具有導航屬性到'Goalcard'。只有屬性「ID」和「名稱」。 –

回答

0

這是因爲我在一個post中多次使用db.SaveChanges();。減少我使用db.SaveChanges的次數幫助我擺脫了錯誤。

相關問題