2010-07-20 34 views
1

对于实施例起见,可以说我有含有这些列可以更新一行而不必下拉和更新每一列?

  • ID(主键,自动增量)
  • 姓(32个字符)
  • 名字(32个字符)
  • 图片(包含平均10k数据的二进制JPEG数据)

使用SubSonic和/或LINQ如何只更新记录的名字列而不尝试获取图片列或尝试更新图片列?

现在我看到这样做的唯一方法是这样的:

var p=Data.People(x=>x.ID==SomeID); 
p.FirstName="Foobar"; 
p.Save(); 

从我虽然可以告诉的是,它完全加载对象过线发生,完全什么保存对象。尽管如此,我不希望为了这样一个简单的操作而转移超过10k的数据。我该如何解决?

+0

另外,当然我知道你可以只打入原始SQL,但我感觉这是错误的。 – Earlz 2010-07-20 19:24:07

+0

虽然已经有一段时间了,但我记得Subsonic会检查修改过的列。 – TheVillageIdiot 2010-07-20 19:37:41

+0

@TheV是的,但这并没有帮助它在最初的'选择'拉下所有的事实。 – Earlz 2010-07-20 19:42:04

回答

3

下面是一个来自Rob的SubSonic 3预览版的旧例子。

db.Update<Products>().Set(
    x => x.Discontinued == false, 
    x => x.ReorderLevel == 100) 
    .Where(x=>x.Category==5) 
    .Execute(); 

http://blog.wekeroad.com/2008/11/12/subsonic-3-0-preview-2

在你的条件:

db.Update<People>().Set(
    p => p.FirstName == "FooBar") 
    .Where(p => p.ID == SomeId) 
    .Execute(); 
+0

实际上你的版本不能编译,所以我猜用于更新的第一个版本应该可以工作? – Earlz 2010-07-20 21:44:39

+0

它可能使用'=='因为表达式树不支持赋值。 – user7116 2010-07-20 21:52:40

+0

好的,它不会抛出错误,但这不起作用。该数据库没有改变或任何东西 – Earlz 2010-07-20 22:30:41