2011-10-10 24 views
0

您好,我在使用C#编写MVC 3。如何确保组合键在数据库中不存在?

我正在填充辅导教师和学生之间的辅助表,称为Tutor_Student。此表的主键由来自父表和主题的tutorId和studentId组成。

我有什么在我的模型如下:

 [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; } 

当用户从该网站填入本表我想,以确保复合主键已经不存在于数据库中,以避免主键违法行为。

有没有办法做到这一点? 预先感谢您,我真的很感激它...

回答

3

处理此问题的一种方法是在列上有一个unique constraint并让SQL Server处理验证。然后你可以只需catchSqlException保存和处理时适度抛出。 SqlException类包含许多有用的信息,您可以深入了解哪些内容出错,如Errors集合。

解决此问题的另一种方法是创建一个数据访问层,其中包含这些类型的辅助方法。在repository pattern,数据仓库是有以下方法用自然的地方:

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

该方法的具体实现取决于你的数据库服务器等,但通过下面的存储库模式上,你得到所需的水平在您的应用程序中分离,以结构化和直观的方式处理这些类型的问题。

相关问题