如何确保组合键在数据库中不存在
本文关键字:数据库 不存在 组合 何确保 确保 | 更新日期: 2023-09-27 18:10:49
你好,我在MVC 3编码,使用c#。
我正在填充导师和学生之间的关联表,称为Tutor_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; }
当用户从网站填充这个表时,我想确保复合主键在数据库中不存在,以避免主键冲突。
有什么办法吗?
处理这个问题的一种方法是在列上有一个unique constraint
,并让SQL Server处理验证。然后你可以只catch
的SqlException
抛出时,保存和处理它优雅。SqlException类包含许多有用的信息,您可以深入研究这些信息以找出出错的地方,例如Errors
集合。
处理这个问题的另一种方法是创建一个数据访问层,其中包含用于这类事情的辅助方法。在存储库模式中,数据存储库是具有以下方法的自然位置:
bool Exists(string tutorID, string studentID, string subject)
此方法的确切实现取决于您的数据库服务器等,但是通过遵循存储库模式,您可以在应用程序中获得所需的分离级别,从而以结构化和直观的方式处理这些类型的问题。