PetaPoco \ NPoco - 部分插入
PetaPoco \ NPoco - Partial Insert
有没有办法使用 PetaPoco 或 NPoco 部分插入对象?
例如,我有一个名为 Users:
的 table
UserId | UserName | UserMail | UserCreationDate
这些列中的每一列都是 NON NULLABLE,并且在留空时具有默认值。
在 ASP.NET 中,我有一个用户 class,我使用 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)
如您所见,它没有考虑 class 中的其他变量。
今天,如果我使用插入命令,即使我为 class 中的单个 属性 赋值,NPoco 仍会尝试将所有 class 变量插入设置变量的数据库中不想设置 class 的默认值(与数据库默认值不同)
此外,所有属性都是 insertable/updateable,因此 class 中不能有任何 ResultColumn 类型。我想插入这些值,但只插入我在该特定实例中声明的值。所有属性都可用于更新和插入,但对于每个实例,我只插入我声明的内容。
您提供的架构不包含 FirstName
列。
假设列映射到 UserName
,使用以下内容应该按预期插入。
dim sql = new Sql("INSERT Users(UserName) VALUES(@0)", userData.FirstName)
db.Execute(sql)
我会创建一个 PartialUserForInsert class:
[TableName("Users")]
public class PartialUserForInsert
{
public string UserName { get; set; }
}
有没有办法使用 PetaPoco 或 NPoco 部分插入对象? 例如,我有一个名为 Users:
的 tableUserId | UserName | UserMail | UserCreationDate
这些列中的每一列都是 NON NULLABLE,并且在留空时具有默认值。
在 ASP.NET 中,我有一个用户 class,我使用 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)
如您所见,它没有考虑 class 中的其他变量。 今天,如果我使用插入命令,即使我为 class 中的单个 属性 赋值,NPoco 仍会尝试将所有 class 变量插入设置变量的数据库中不想设置 class 的默认值(与数据库默认值不同)
此外,所有属性都是 insertable/updateable,因此 class 中不能有任何 ResultColumn 类型。我想插入这些值,但只插入我在该特定实例中声明的值。所有属性都可用于更新和插入,但对于每个实例,我只插入我声明的内容。
您提供的架构不包含 FirstName
列。
假设列映射到 UserName
,使用以下内容应该按预期插入。
dim sql = new Sql("INSERT Users(UserName) VALUES(@0)", userData.FirstName)
db.Execute(sql)
我会创建一个 PartialUserForInsert class:
[TableName("Users")]
public class PartialUserForInsert
{
public string UserName { get; set; }
}