有没有办法使用 PetaPoco 或 NPoco 部分插入对象?例如,我有一个名为 Users 的表:
UserId | UserName | UserMail | UserCreationDate
这些列中的每一列都是 NON NULLABLE 并且当它们为空时具有默认值。
在 ASP.NET 中,我有一个 User 类,我使用 ORM 插入一条新记录,其中只有名称:
Dim userData As New User()
userData.UserName = "Jimmy Hendrix"
db.Insert(userData)
我希望数据库如下所示:
UserId | UserName | UserMail | UserCreationDate
12 | Jimmy Hendrix | (DB default)| (DB default)
我希望插入命令只插入名称,而不使用对象的默认值插入其他对象属性。
比如有部分更新,我要部分插入。这在 PetaPoco 中可能吗?
没有任何ORM,有没有另一种方法可以自己做?
编辑:
使用 SQL 我可以完成工作,但我需要使用 POCO 对象,所以我不想记住数据库参数。我想要类似的东西
user.UserName = "Michael"
user.Insert(user)
它只会插入用户名,而忽略其他变量。我想在后台生成的 SQL 是:
"INSERT Users(UserName) VALUES(@UserName)"
(while the @UserName parameter holds the userData.FirstName value)
如您所见,它没有考虑类中的其他变量。今天如果我使用插入命令,即使我给类中的单个属性赋值,NPoco 仍然尝试将所有类变量插入到数据库中,设置我不想用类的默认值设置的变量(与 db 默认值不同)
此外,所有属性都是可插入/可更新的,因此类中不能有任何 ResultColumn 类型。我想插入这些值,但只插入我在该特定实例中声明的值。所有属性都可以更新和插入,但对于每个实例,我只插入我声明的内容。