我有一个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