如何使用ScalaQuery修改现有记录?

时间:2011-11-28 11:38:41

标签: scalaquery

通过修改,我指的是SQL UPDATE和DELETE的对应部分。

在这两种情况下,我都有一个对象记录,我想在数据库中删除它。该表始终具有主键,并在我的对象记录中设置。

请注意,我没有“创建”该对象记录的查询或其他来源,我只有它和表格。所以一般来说它看起来像这样:

fetch the Record from Table
...
// forget how I get the Record
...
Record.person_name = "joe"
? update Record ?

怎么做?

<小时/> 我定义记录和表格如下:

case class Topic(var id : Long,
                 var sectionId : Int,
                 ...

object TopicTable  extends Table[Topic]("Topic") {
       def id = column[Long]("top_Id", O.PrimaryKey) 
       def sectionId = column[Int]("sect_Id")
       ...

1 个答案:

答案 0 :(得分:4)

似乎没有直接的方法,所以你必须明确创建一个记录集才能修改(为了比较 - 我知道SQ不是ORM - 在EF中你获取记录,修改它们,此时你的数据上下文“知道”它们被修改,所以你要做的就是提交更改。

首先,您可以根据需要创建RS:

val rs = for (rec <- MyTable if rec.id===10) yield rec;

和删除记录:

rs.mutate(rec => rec.delete())

更新:

rs.update(new MyRecord(...))

或(八卦是,它更快;-))

rs.mutate(rec => rec.row = new MyRecord(...))

请注意我是SQ的新手,所以我可能会误导你。我虽然为我工作。

现在,唯一缺少的部分是添加一些不错的包装器,因此可以直接按照记录进行删除和更新。