我有一個SQL服務器表有2個字段,ID(主鍵)和名稱(唯一鍵)。 我正在使用linq to sql來從此表中爲asp.net MVC生成模型對象。使用asp.net mvc和linq驗證唯一鍵到sql?
要在部分類
public partial class Company : IDataErrorInfo
{
private Dictionary<string, string> _errors = new Dictionary<string,string>();
partial void OnNameChanging(string value)
{
if (value.Trim().Length == 0)
{
_errors.Add("Name", "Name is required");
return;
}
}
}
爲與Model.IsValid財產和Html.ValidationSummary幫手預計這將執行執行我實現IDateErrorInfo模型驗證。
但是,此代碼只是檢查新創建的公司名稱是否爲空。我還需要檢查表中的其他公司是否使用了該名稱。
我可以在我的存儲庫上調用AddCompany方法並捕獲SQLException,但這種感覺很髒。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude="ID")] Company companyToCreate)
{
if (!ModelState.IsValid)
{
return View();
}
//Add to the Database
try
{
_companyRepos.AddCompany(companyToCreate);
return RedirectToAction("Index");
}
catch(SQLException ex)
{
return View("do something to show the error inserting");
}
}
理想我想在局部類的OnNameChanging方法之前,我嘗試添加該公司執行的唯一鍵檢查。
任何想法,我應該如何做到這一點?我目前唯一的想法是在分部類中創建一個新的數據庫連接並查詢表。
感謝
是的,這工作,並可重新清潔。 – Cephas 2009-06-10 05:31:43