是否有一种使用PetaPoco或NPoco部分插入对象的方法?例如,我有一个名为User的表:
UserId | UserName | UserMail | UserCreationDate这些列中的每一列都是非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)我希望insert命令只插入名称,而不插入具有对象默认值的其他对象属性。
如有部分更新,则需要部分插入。这在PetaPoco中有可能吗?
没有任何ORM的情况下,有其他方法可以独立完成吗?
编辑:
使用SQL我可以完成任务,但我需要使用POCO对象,所以我不想记住数据库参数。我想要像这样的
user.UserName = "Michael"
user.Insert(user)它将只插入UserName,忽略其他变量。我希望在后台生成的SQL是:
"INSERT Users(UserName) VALUES(@UserName)"
(while the @UserName parameter holds the userData.FirstName value)正如您所看到的,它没有考虑类中的其他变量。现在,如果我使用insert命令,即使我给类中的单个属性赋值,NPoco仍然尝试将所有类变量插入db中,设置我不想用类的默认值(与db默认值不同)设置的变量。
而且,所有属性都是可插入/可更新的,因此类中不可能有任何ResultColumn类型。我想插入这些值,但只插入我在特定实例中声明的值。所有属性都可用于更新和插入,但对于每个实例,我只插入我声明的内容。
发布于 2015-11-03 17:59:13
我会创建一个PartialUserForInsert类:
[TableName("Users")]
public class PartialUserForInsert
{
public string UserName { get; set; }
}发布于 2015-09-28 13:29:37
所提供的架构不包括FirstName列。
假设该列映射到UserName,则应按预期使用以下内容插入。
dim sql = new Sql("INSERT Users(UserName) VALUES(@0)", userData.FirstName)
db.Execute(sql)https://stackoverflow.com/questions/32758489
复制相似问题