C# WinForms中的PetaPoco

C# WinForms中的PetaPoco,c#,winforms,orm,petapoco,C#,Winforms,Orm,Petapoco,如何使用PetaPoco提交DataGridView中所做的更改?比如: namespace PetaPocoTest { public partial class Form1 : Form { PetaPoco.Database db = new PetaPoco.Database("PgConnection"); IEnumerable<customers> allCustomers; public Form1

如何使用PetaPoco提交DataGridView中所做的更改?比如:

namespace PetaPocoTest
{
    public partial class Form1 : Form
    {
        PetaPoco.Database db = new PetaPoco.Database("PgConnection");

        IEnumerable<customers> allCustomers;


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            allCustomers = db.Query<customers>("SELECT * FROM customers");
            mGrid.DataSource = allCustomers .ToList();            
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            db.Save("customers", "custumer_id", allCustomers);
        }
    }
}
命名空间PetaPocoTest
{
公共部分类Form1:Form
{
PetaPoco.Database db=新的PetaPoco.Database(“PgConnection”);
i数不清的所有客户;
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
allCustomers=db.Query(“从客户中选择*);
mGrid.DataSource=allCustomers.ToList();
}
私有void simpleButton1_单击(对象发送方,事件参数e)
{
数据库保存(“客户”、“客户id”、所有客户);
}
}
}

我终于拿到了。我只是在一些显而易见的事情上浪费了几个小时:\

namespace PetaPocoTest
{
    public partial class Form1 : Form
    {
        PetaPoco.Database db = new PetaPoco.Database("PgConnection");

        IEnumerable<customers> allCustomers;


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            allCustomers = db.Query<customers>("SELECT * FROM customers");
            mGrid.DataSource = allCustomers .ToList();            
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
             foreach (var a in allCustomers)
             {
               db.Save("customers", "custumer_id", a);
             }
        }
    }
}
命名空间PetaPocoTest
{
公共部分类Form1:Form
{
PetaPoco.Database db=新的PetaPoco.Database(“PgConnection”);
i数不清的所有客户;
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
allCustomers=db.Query(“从客户中选择*);
mGrid.DataSource=allCustomers.ToList();
}
私有void simpleButton1_单击(对象发送方,事件参数e)
{
foreach(所有客户的var a)
{
数据库保存(“客户”、“客户id”,a);
}
}
}
}
试试我的答案


这是迄今为止最简单、最简单的方法,可以做您想做的事情。

db.Save不起作用。我得到了“该对象没有与主键列名'customer_id'匹配的属性”,我确实尝试过在上面移动.ToList(),但仍然得到了“该对象没有与主键列名'customer_id'匹配的属性”没有。。。这不好!它可以工作,但它会为所有行生成并执行UPDATE-s,无论它们是否被修改!Micro ORM通常不跟踪更改。您需要自己实现这一点。我建议您查找一个修改事件,并将每个更改的客户标记为已更新。保存后,只保留已更改的客户