Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net PetaPoco\NPoco-部分插入_Asp.net_Vb.net_Insert_Petapoco_Micro Orm - Fatal编程技术网

Asp.net PetaPoco\NPoco-部分插入

Asp.net PetaPoco\NPoco-部分插入,asp.net,vb.net,insert,petapoco,micro-orm,Asp.net,Vb.net,Insert,Petapoco,Micro Orm,有没有办法使用PetaPoco或Npco部分插入对象? 例如,我有一个名为Users的表: UserId | UserName | UserMail | UserCreationDate 这些列中的每一列都不可为null,并且在保留为空时具有默认值 在ASP.NET中,我有一个用户类,我使用ORM插入一个新记录,其中只包含以下名称: Dim userData As New User() userData.UserName = "Jimmy Hendrix" db.Insert(userData

有没有办法使用PetaPoco或Npco部分插入对象? 例如,我有一个名为Users的表:

UserId | UserName | UserMail | UserCreationDate
这些列中的每一列都不可为null,并且在保留为空时具有默认值

在ASP.NET中,我有一个用户类,我使用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)
它将只插入用户名,而忽略其他变量。我希望在后台生成的SQL是:

"INSERT Users(UserName) VALUES(@UserName)"
(while the @UserName parameter holds the userData.FirstName value)
如您所见,它没有考虑类中的其他变量。 今天,如果我使用insert命令,即使我给类中的单个属性赋值,NPoco仍然会尝试将所有类变量插入到db设置中,这些变量是我不想用类的默认值设置的(与db默认值不同)


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

您提供的架构不包括
FirstName

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

dim sql = new Sql("INSERT Users(UserName) VALUES(@0)", userData.FirstName)
db.Execute(sql)

我将创建PartialUserForInsert类:

[TableName("Users")]
public class PartialUserForInsert
{
    public string UserName { get; set; }
}

使用SQL我可以完成任务,但我需要使用POCO对象,所以我不想记住数据库参数。我想要像:user.UserName=“Michael”user.Insert(user)这样的东西,它将只插入用户名,而忽略其他变量。您发布的sql是我希望PetaPoco在后台执行的。请使用
ResultColumn
属性标记具有默认值的属性。这将阻止对此属性进行任何更新。但是,在检索数据时必须显式地包含这些列,但我不想将它们设置为ResultColumn,因为所有属性都是可插入/可更新的。我想更新这些值,但只更新我在该特定实例中声明的值。所有属性都可以更新和插入,但对于每个实例,我只插入我声明的内容,这已经有一段时间了。有人能帮我解决我的问题吗?如果有人帮助我解决这个问题,我将不胜感激。这将迫使我为在系统中执行的每个插入更新创建一个类。这会导致成千上万的班级出现这样的情况。我不知道每次调用都要插入哪些字段,我不想被迫创建几个这样的类,我想除了下面@CallMeKags的答案之外,这是你唯一的选择。我知道很多db层在执行更新之前会首先使用select语句对模型对象进行水合,以确保模型状态为当前状态。也许您可以使用这种方法?顺便说一句,如果您有数千个部分插入/更新模式,那么您的应用程序听起来非常复杂。您的系统中有1000多个表吗?我的项目中有数百个表,但是当我在编写代码并希望从“Users”表中插入一些数据时,有时我希望插入部分数据,让DB defaults来完成其余的工作。“Users”表有很多列,我不想为我执行的每个INSERT命令创建单独的类。将有数百个不同的类,具有不同的字段组合。我接受这个答案,因为它是我所问问题的最正确答案。非常感谢你