【问题标题】:How to know is a particular record is present in database?如何知道数据库中是否存在特定记录?
【发布时间】:2011-12-05 17:18:56
【问题描述】:

我如何知道数据库中是否存在特定数据?例如如果数据库的表中已有“Student_Id”和“Course_Id”,则更新记录,否则插入记录。

我已经有一个用于插入数据的控制器操作,但我想添加一个附加功能,用于检查数据库 (SQL Server) 并根据记录是否存在或现在进行插入/更新。

我使用 Linq to SQL 插入数据。

提前致谢

【问题讨论】:

  • Student_id和Course_id是如何生成的?
  • 查看这个 stackoverflow 答案 [if exists statement in sql to linq][1] [1]: stackoverflow.com/questions/476214/…
  • @Maess 它们是由不同的系统生成的。它们都不是主键。

标签: c# sql-server asp.net-mvc linq-to-sql


【解决方案1】:

因为你使用 LinqToSql 我会做类似的事情

var item = (from c in dataContext.TableName
           where c.StudentID == your_sid && c.CourseID== your_course_id
           select c).FirstOrDefault();


if(item==null)
{
   //insert the record
}
else
{
   //update the record
}

【讨论】:

    【解决方案2】:

    可以在添加数据之前通过简单的 select 语句检查数据是否存在。

    bool exists = yourTable.Any(row => row.StudentID == studentId && row.CourseID = courseID);
    

    但理想情况下,您应该将数据库设计为使 Student_IdCourse_Id 成为此表的组合唯一键,因此如果记录已经存在,您的代码将根本无法添加它们。

    正如 Maess 所问,这些价值是如何产生的?您的选项可能会根据数据是否由用户生成而改变。例如;如果您有两个下拉框来选择学生和课程,请不要让用户选择学生已经在学习的课程。

    【讨论】:

    • Any 也采用谓词。使Where 变得多余。
    【解决方案3】:

    尝试使用.FirstOrDefault() 获取记录,如果为null,则插入,然后更新值和.SubmitChanges()

    【讨论】:

      猜你喜欢
      • 2016-09-20
      • 2019-11-21
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 2018-09-13
      • 1970-01-01
      相关资源
      最近更新 更多