首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PetaPoco \ NPoco -部分插入

PetaPoco \ NPoco -部分插入
EN

Stack Overflow用户
提问于 2015-09-24 09:59:12
回答 2查看 894关注 0票数 1

是否有一种使用PetaPoco或NPoco部分插入对象的方法?例如,我有一个名为User的表:

代码语言:javascript
复制
UserId | UserName | UserMail | UserCreationDate

这些列中的每一列都是非NULLABLE,当它们为空时有一个默认值。

在ASP.NET中,我有一个User类,我使用ORM插入一个只有名称的新记录:

代码语言:javascript
复制
Dim userData As New User()
userData.UserName = "Jimmy Hendrix"
db.Insert(userData)

我希望数据库如下所示:

代码语言:javascript
复制
UserId |   UserName    |   UserMail  | UserCreationDate
  12   | Jimmy Hendrix | (DB default)|  (DB default)

我希望insert命令只插入名称,而不插入具有对象默认值的其他对象属性。

如有部分更新,则需要部分插入。这在PetaPoco中有可能吗?

没有任何ORM的情况下,有其他方法可以独立完成吗?

编辑:

使用SQL我可以完成任务,但我需要使用POCO对象,所以我不想记住数据库参数。我想要像这样的

代码语言:javascript
复制
user.UserName = "Michael"
user.Insert(user)

它将只插入UserName,忽略其他变量。我希望在后台生成的SQL是:

代码语言:javascript
复制
"INSERT Users(UserName) VALUES(@UserName)"
(while the @UserName parameter holds the userData.FirstName value)

正如您所看到的,它没有考虑类中的其他变量。现在,如果我使用insert命令,即使我给类中的单个属性赋值,NPoco仍然尝试将所有类变量插入db中,设置我不想用类的默认值(与db默认值不同)设置的变量。

而且,所有属性都是可插入/可更新的,因此类中不可能有任何ResultColumn类型。我想插入这些值,但只插入我在特定实例中声明的值。所有属性都可用于更新和插入,但对于每个实例,我只插入我声明的内容。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-03 17:59:13

我会创建一个PartialUserForInsert类:

代码语言:javascript
复制
[TableName("Users")]
public class PartialUserForInsert
{
    public string UserName { get; set; }
}
票数 1
EN

Stack Overflow用户

发布于 2015-09-28 13:29:37

所提供的架构不包括FirstName列。

假设该列映射到UserName,则应按预期使用以下内容插入。

代码语言:javascript
复制
dim sql = new Sql("INSERT Users(UserName) VALUES(@0)", userData.FirstName)
db.Execute(sql)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32758489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档