Functional Demos

删除数据演示

日志操作


一、基本说明:

要向数据库里插入一条或者多条记录,在Winson.Framework3.0里此操作已变得非常轻松!

在删除操作中,主要分以下3种方式:

1、以实体主键删除:
  此方法适合删除单个记录,只需在为实体赋值时,同时指定实体主键的值,即会自动以此主键进行删除。

2、以自定义条件删除:
  在调用删除方法时,可以输入以 NameValueCollection 对象创建的条件,具体的条件创建说明,可查看 查询数据 演示。

3、批量删除:
  此方法可以一次性删除多条实体记录,每条记录均要以实体主键进行删除,因此必须为每个实体类设置期主键值,然后即可以一个实体集合形式进行一次性删除。

二、操作步骤:

注:以下演示均以WinsonFrameDB数据库的 Test 表为例:

1、以实体主键删除:


操作步骤如下:

a.引用以下命名空间:
using Winson.EntityOP;
b.实例化一个实体操作类,此实体操作类已包括了实体类和所有相关的操作方法:
Test test = new Test();
c.为实体赋值,其中 Entity 为实体类属性,所有实体操作类里都可通过此属性直接调用其实体里所有成员属性:

//以下代码将会删除Id等于1的记录
test.Entity.Id = 1;//必须为其主键赋值
d.调用删除的方法,向数据库进行删除操作,此方法返回影响的记录行数:
test.Delete();
e.完整的代码如下:

Test test = new Test();
test.Entity.Id = 1;//必须为其主键赋值
if (test.Delete() > 0 ) //判断是否添加成功
    Response.Write("success");
else
    Response.Write("fail");

2、自定义条件删除:


a.此方法不需指定主键,甚至如果需要的话,可以连主键一起删除,不过一般不建议去删除主键啦,只需设置好条件对象即可:

using Winson.EntityOP;
//使用NameValueCollection必需先引用以下命名空间
using System.Collections.Specialized;

//创建查询条件对象
NameValueCollection conditionValue = new NameValueCollection();

conditionValue["Name like"] = "winson";//删除Name里包括winson里记录

//创建实体操作类
Test test = new Test();
b.调用删除的方法,向数据库进行删除操作,此方法返回影响的记录行数:
test.Delete(conditionValue);
c.完整的代码如下:

using Winson.EntityOP;
//使用NameValueCollection必需先引用以下命名空间
using System.Collections.Specialized;

//创建查询条件对象
NameValueCollection conditionValue = new NameValueCollection();

conditionValue["Name like"] = "winson";//删除Name里包括winson里记录

//创建实体操作类
Test test = new Test();
if (test.Delete(conditionValue) > 0 ) //判断是否添加成功
    Response.Write("success");
else
    Response.Write("fail");

3、批量删除:


批量删除步骤 a-c 与单实体主键删除操作一样,从 d 步骤开始要创建一个新实体,同时添加到集合里,以下步骤从 d 开始:

d.需将以上实体添加到集合里,然后再创建另一个新实体,为新实体赋值,不断重复此步骤即可添加多个实体了:

test.AppendEntity(); //将第一个实体追加到实体集合里
test.CreateEntity(); //创建另一个新实体
//为新实体赋值
//每个实体均要设置好其主键
test.Entity.Id = 2;
test.AppendEntity(); //将新实体再追加到实体集合里
e.调用批量删除的方法,向数据库进行删除操作,此方法返回一个布尔值,成功为True,否则为False:
test.DeleteBatch();
f.完整的代码如下:

Test test = new Test();
test.Entity.Id = 1;
test.AppendEntity(); //将第一个实体追加到实体集合里
test.CreateEntity(); //创建另一个新实体
//为新实体赋值
test.Entity.Id = 2;
test.AppendEntity(); //将新实体再追加到实体集合里
if (test.DeleteBatch()) //判断是否删除成功
    Response.Write("success");
else
    Response.Write("fail");
三、效果演示:

1、以实体主键删除:


请输入要删除的记录ID
ID:


       

private void Delete()
{
    test = new Test();
    test.Entity.Id = String.IsNullOrEmpty(Request["ID"]) ? 1 : Convert.ToInt32(Request["ID"]);

    if (test.Delete() > 0)
        ReturnResult("1");
    else
        ReturnResult("0");
}

2、批量删除实体到数据库:


请输入要删除的多个ID,以逗号隔开,必须是已存在的ID,否则只要有一个删除不了,均会全部Rollback了
ID:


       

private void DeleteBatch()
{
	try
	{
		test = new Test();
		string[] id = String.IsNullOrEmpty(Request["Id"]) ? "" : Request["Id"].Split(",");

		for (int i = 0; i < id.Length; i++)
		{
		    test.Entity.Id = Convert.ToInt32(id[i]);
		    //上面的第一次不用创建,从第二个实体开始就需要创建新实体了
		    test.AppendEntity();
		    test.CreateEntity();
		}
		if (test.DeleteBatch())
		    ReturnResult("1");
		else
		    ReturnResult("0");
	}
	catch (Exception e)
	{            
		ReturnResult("0");
	}
}