那是Entity的語法,
不過我看範例好像是 db.SaveChanges(); 不是 db.SaveChanges;
這個方法我是沒看過,
之前有交接過別人的Entity是用Create(model)和Update(model)的方式,
我自己是沒在用Entity,畢竟效率比較差,
語法是比較簡單不過限制較多,而且效率比較差,
之前有改過別人的Entity,加上有點複雜的運算,
原本需要好幾分鐘才跑完有時候程式還會當,
我改完之後幾秒鐘就跑出結果了。
話說回來,如果程式可以執行,可是沒有跑到這裡,那是不是表示這個函式根本沒有被執行到?
小魚
大大你好 db.SaveChanges();這段小弟我的也是這樣 手殘沒複製好QQ
我用IF去做判斷,如果必要欄位為null,就不會跑db.SaveChanges()。
但執行結果就像上面的結果一樣
你這樣講我還是聽不懂,
所以問題解決了嗎?
如果沒解決是卡在什麼地方?
如果還有問題你可能要PO一下完整的程式碼了
public ActionResult Create(Models.Product postback)
{
if(this.ModelState.IsValid)
{
using (Models.CartsEntities db = new Models.CartsEntities())
{
db.Products.Add(postback);
db.SaveChanges();
TempData["ResultMessage"] = String.Format("商品[{0}]建立成功", postback.Name);
return RedirectToAction("Index");
}
}
ViewBag.ResultMessage = "資料有誤";
return View("postback");
}
我知道,
那個網站我有實作過,
只是我沒有用Entity這個部分,
請問你有下過斷點,
看程式跑到什麼地方,
(甚至我懷疑根本沒跑到Create函式裡面)
小魚
我 Create 可以新增
可是 我故意要少輸入幾個必要輸入項目
他就會跑出錯誤 db.SaveChanges();
不會在BOX底下顯示
我整理一下你所說的,
你一個一個回答吧,
1.你意思是說如果全部都正常輸入,是可以新增的?
2.可是如果你少輸入幾個,會出現錯誤?
3.錯誤出現後,資料庫裡面資料會變嗎?
4.少輸入的是什麼樣的欄位?(如int或string或...)
5.你跑出的錯誤是什麼樣的錯誤?
小魚
1.是的,SQL也會新增
2.對,我是故意在Create幾個欄位沒給他值
但我寫的IF預計 欄位下面會出現說請輸入值之類的
3.SQL不會新增成功
4.欄位值在SQL設定為不可為NULL int,string都有
5.
因為欄位值設定不可為null,但是你卻傳給他null,所以會出錯吧,
印象中Entity的變數應該是int?之類的,所以是允許null的,
一般會先在前端用JavaScript判斷欄位,
後端這邊你可以用try catch包起來,如果成功就轉到原來的頁面,
如果失敗就將model傳回編輯頁面,並顯示錯誤訊息,
(錯誤訊息通常是顯示給使用者看的錯誤訊息,
程式的錯誤訊息一般是記在Log裡面)
不過最好是可以去判斷每個欄位,如果是null就給他一個預設值,
方法很多的,自己想一想吧。
順帶一提,那個範例只是提供基本的功能而已,
如果你要防呆,或是一些進階的功能,
很多東西都要自己加。
小魚
小弟這幾天,有找到問題 我沒有把SQL路徑設定好
不好意思,這麼晚回覆你。 感謝你得解答