C# 如何确保复合密钥在数据库中不存在?

C# 如何确保复合密钥在数据库中不存在?,c#,asp.net-mvc-3,validation,C#,Asp.net Mvc 3,Validation,您好,我正在用MVC 3编写代码,使用C# 我正在填充一个名为tutor\u student的导师和学生之间的关联表。此表的主键由父表中的tutorId和studentId以及Subject组成 我的模型中包含的内容如下: [Key, Column(Order = 0)] public string tutorID { get; set; } [Key, Column(Order = 1)] public string studen

您好,我正在用MVC 3编写代码,使用C#

我正在填充一个名为tutor\u student的导师和学生之间的关联表。此表的主键由父表中的tutorId和studentId以及Subject组成

我的模型中包含的内容如下:

        [Key, Column(Order = 0)]
        public string tutorID { get; set; }
        [Key, Column(Order = 1)]
        public string studentID { get; set; }
        [Key, Column(Order = 2)]
        public string Subject { get; set; }
当用户从网站填充此表时,我希望确保数据库中不存在复合主键,以避免主键冲突

有没有办法做到这一点?
提前感谢您,我真的很感激…

处理此问题的一种方法是在列上添加一个标记,并让SQL Server处理验证。然后您可以捕获保存时抛出的
SqlException
并优雅地处理它。该类包含许多有用的信息,您可以深入了解这些信息以找出问题所在,例如集合

处理这个问题的另一种方法是创建一个数据访问层,其中包含用于这类事情的助手方法。在中,数据存储库是具有以下方法的自然场所:

bool Exists(string tutorID, string studentID, string subject)

此方法的确切实现取决于您的数据库服务器等,但通过遵循存储库模式,您可以在应用程序中获得所需的分离级别,以便以结构化和直观的方式处理这些类型的问题。

处理此问题的一种方法是在列上添加一个标记,并让SQL Server处理验证。然后您可以捕获保存时抛出的
SqlException
并优雅地处理它。该类包含许多有用的信息,您可以深入了解这些信息以找出问题所在,例如集合

处理这个问题的另一种方法是创建一个数据访问层,其中包含用于这类事情的助手方法。在中,数据存储库是具有以下方法的自然场所:

bool Exists(string tutorID, string studentID, string subject)
此方法的确切实现取决于您的数据库服务器等,但通过遵循存储库模式,您可以在应用程序中获得所需的分离级别,以结构化和直观的方式处理这些类型的问题