Asp.net mvc 是否使用asp.net mvc和linq to sql验证唯一密钥?

Asp.net mvc 是否使用asp.net mvc和linq to sql验证唯一密钥?,asp.net-mvc,linq-to-sql,unique-key,Asp.net Mvc,Linq To Sql,Unique Key,我有一个sql server表,有两个字段,ID(主键)和名称(唯一键)。 我正在使用LINQtoSQL从这个表中为asp.NETMVC生成模型对象 为了执行模型验证,我在一个分部类中实现了IDateErrorInfo public partial class Company : IDataErrorInfo { private Dictionary<string, string> _errors = new Dictionary<string,string>()

我有一个sql server表,有两个字段,ID(主键)和名称(唯一键)。 我正在使用LINQtoSQL从这个表中为asp.NETMVC生成模型对象

为了执行模型验证,我在一个分部类中实现了IDateErrorInfo

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;
        }
    }
}
理想情况下,我希望分部类中的OnNameChanging方法在尝试添加公司之前执行唯一密钥检查

我该怎么做有什么想法吗?到目前为止,我唯一的想法是在分部类中创建一个新的数据库连接并查询表


谢谢

不管你如何分割它,你显然必须点击数据库才能得到已经在使用的名字列表。因此,我建议在存储库中添加一个方法,该方法基本上只返回一个IList或IEnumberale,它只包含数据库中该表中的所有不同名称。然后,在验证方法中,只需在存储库中使用该方法即可获得所有唯一名称,并在那里执行检查。

一种可能性是AddCompany方法返回一个布尔值,指示操作的成功或失败

但是,通常在尝试添加记录之前捕获此类错误。放

bool Exists(string companyName) 
方法,并在尝试添加记录之前使用此方法捕获错误


这样做更可取的原因是您确切地知道故障发生的原因。否则,您必须捕获自定义异常或检查返回的错误代码。

那么谁将使用新的回购方法呢?控制器?现在您的控制器有了业务逻辑(现在不是一个事务脚本吗?)是否有某种方法将其合并到业务/域层/模型中?
bool Exists(string companyName)