ArrayList ,ilist,DataSet,哪个性能更好点。

axemaster_400 2007-09-12 05:08:06
RT
...全文
951 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
火星大能猫 2011-01-10
  • 打赏
  • 举报
回复
近日研读PetShop4 的源代码,发现使用了 IList<> 作为传递一部分数据的载体,比起Grove的用ArrayList作为传递载体少了转型,感觉方便一点,但是用久了,心生疑问,那种性能高一点呢.

今天我就做个简单的性能分析.

首先介绍的数据来源: 一个数据表

CREATE TABLE [dbo].[SYS_Users](
[UserID] [int] IDENTITY(1,1) NOT NULL,
[UserName] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[UserPswd] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
CONSTRAINT [PK_SYS_Users] PRIMARY KEY CLUSTERED
(
[UserID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

数据库是SQLServer 2005 , 该表有1733 条数据

我写了以下代码来测量完成操所用的时间,学过物理的都知道,测量不是一次半次就可以了,需要多次测量来求平均值,才能作为测量值,呵呵
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace MyMain
{
class Program
{
static void Main(string[] args)
{
int i = 0;
Console.WriteLine("初始化....");
string cnString = @"Server=localhost;Database=Education.Database;UID=sa;PassWord=123456;";
SqlConnection cn = new SqlConnection(cnString);
SqlCommand cm = new SqlCommand("select * from SYS_Users", cn);
cn.Open();
SqlDataReader rdr = cm.ExecuteReader();
while (rdr.Read())
{
i++;
}
rdr.Close();
cn.Close();
SqlDataAdapter ada = null;
Console.WriteLine("开始....");
DateTime start;
DateTime end;

TimeSpan[] TS = new TimeSpan[5];

for (int counter = 1; counter <= 100; counter++)
{
start = DateTime.Now;
for (int smallCounter = 1; smallCounter <= 10; smallCounter++)
{
ada = new SqlDataAdapter("select * from SYS_Users", cn);
SYS_UserDS.SYS_UsersDataTable table = new SYS_UserDS.SYS_UsersDataTable();
cn.Open();
ada.Fill(table);
cn.Close();
}
end = DateTime.Now;
TS[0] += end - start;



start = DateTime.Now;
for (int smallCounter = 1; smallCounter <= 10; smallCounter++)
{
cm = new SqlCommand("select * from SYS_Users", cn);
IList<MySysUser> MyList = new List<MySysUser>();
cn.Open();
rdr = cm.ExecuteReader();
while (rdr.Read())
{
MyList.Add(new MySysUser(rdr.GetInt32(0), rdr.GetString(1), rdr.GetString(2)));
}
rdr.Close();
cn.Close();
}
end = DateTime.Now;
TS[1] += end - start;




start = DateTime.Now;
for (int smallCounter = 1; smallCounter <= 10; smallCounter++)
{
cm = new SqlCommand("select * from SYS_Users", cn);
ArrayList MyAl = new ArrayList();
cn.Open();
rdr = cm.ExecuteReader();
while (rdr.Read())
{
MyAl.Add(new MySysUser(rdr.GetInt32(0), rdr.GetString(1), rdr.GetString(2)));
}
rdr.Close();
cn.Close();
}
end = DateTime.Now;
TS[2] += end - start;




start = DateTime.Now;
for (int smallCounter = 1; smallCounter <= 10; smallCounter++)
{
cm = new SqlCommand("select * from SYS_Users", cn);
MySysUser[] MyArray = new MySysUser[1800];
cn.Open();
int flag = 0;
rdr = cm.ExecuteReader();
while (rdr.Read())
{
MyArray[flag] = new MySysUser(rdr.GetInt32(0), rdr.GetString(1), rdr.GetString(2));
flag++;
}
rdr.Close();
cn.Close();
}
end = DateTime.Now;
TS[3] += end - start;


start = DateTime.Now;
for (int smallCounter = 1; smallCounter <= 10; smallCounter++)
{
ada = new SqlDataAdapter("select * from SYS_Users", cn);
DataTable aTable = new DataTable();
cn.Open();
ada.Fill(aTable);
cn.Close();
}
end = DateTime.Now;
TS[4] += end - start;


Console.Write(".");
}
Console.WriteLine();
Console.WriteLine("结束");
foreach (TimeSpan ts in TS)
{
Console.WriteLine(ts);
}
Console.ReadLine();
}
}
}



SqlConnection cn = new SqlConnection(cnString);
SqlCommand cm = new SqlCommand("select * from SYS_Users", cn);
cn.Open();
SqlDataReader rdr = cm.ExecuteReader();
while (rdr.Read())
{
i++;
}
rdr.Close();
cn.Close();

这一段是为了使连接池中有一个连接 , 使得建立连接的时间不会引入到后面的测试当中
其实代码绝大部分是一样的

最后得出的结果如下:

初始化....
开始....
................................................................................
....................
结束
00:00:43.0819488
00:00:07.5007856
00:00:07.5508576
00:00:07.4406992
00:00:12.0873808

大家可以看到,最慢的是 TypedDataTable 他的父类 DataTable 比他快了将近3倍,
IList<> ArrayList 数组是同一个数量级,但是IList 不需要ArrayList那样转型,用起来舒服一点,而且稍稍快一点,(1000 次 Load 进1733条数据,领先0.05秒,少得可怜)而最快的数组,但是数组这里我是知道有多少数据的,所以一开始就设定为MySysUser[] MyArray = new MySysUser[1800]; 呵呵,至于实际应用中怎么知道改数组多大呢,就看各位牛人了。但是,数组比IList也快不了多少,(1000 次 Load 进1733条数据,领先0.06秒,也是少得可怜),对于长度难以决定的场合IList明显是占有上风的

欢迎大家评论
jo_say 2010-01-22
  • 打赏
  • 举报
回复
路过。也关注过这个问题。
zhou3215 2008-06-27
  • 打赏
  • 举报
回复
抵制Ivony这样的鸟人,这种鸟人应该要清除出csdn,csdn本来就是用来进行技术交流的,别人问问题在他眼里还成了不对了,没有教养没有素质的鸟人就是这样的,不想答问题就闭上你那臭鸟嘴
Ivony 2007-09-13
  • 打赏
  • 举报
回复
其实我很好奇CSDN上这些问题背后的楼主想要得到什么?

想要有个星星告诉你ArrayList或者别的东西的性能是最好的,然后屁颠屁颠的跑去向别人炫耀,我这样写性能是最好的,猩猩告诉我的。


嗯……现在我郑重地告诉你。

回家,要多看书,多看代码。
axemaster_400 2007-09-13
  • 打赏
  • 举报
回复
Ivony(授人以鱼不如授人以渔,上海谋生)
-------------------------------------------------
我问什么是我的事,关你鸟事。不想回答可以不进我的帖子
whgames_007 2007-09-13
  • 打赏
  • 举报
回复
ArrayList 是集合
IList 是接口
DataSet 是数据集
同意这种说法
iamXiaMi 2007-09-13
  • 打赏
  • 举报
回复
ArrayList 是集合
IList 是接口
DataSet 是数据集

有可比吗?
lonehare 2007-09-13
  • 打赏
  • 举报
回复
数组的效率最高,因为它是纯线性的……
Ivony 2007-09-13
  • 打赏
  • 举报
回复
小时候老师上课没教好你中文还是咋的?

不懂就直接说“我不知道这三个东西有啥区别,哪位大大可以给我讲讲么”。


是不是写个效率就提高你的档次了?只是提高了你的幼稚水平……
axemaster_400 2007-09-13
  • 打赏
  • 举报
回复
我想要的就是005 和jingle cat的回答,能理解我的意思。
NqIceCoffee 2007-09-13
  • 打赏
  • 举报
回复
呵呵,Ivony

经典哦
Ivony 2007-09-13
  • 打赏
  • 举报
回复
我不爽是我的事,也不关你鸟的事。嗯嗯……
Ivony 2007-09-13
  • 打赏
  • 举报
回复
骂人会被扣分的,我不跟你玩,我看你被玩。
刀枪blue 2007-09-12
  • 打赏
  • 举报
回复
开销比较大的是dataset,8过这样有比较吗。。关注
wxylvmnn 2007-09-12
  • 打赏
  • 举报
回复
目前我做过的,关于数据库操作的,都使用自定义DataSet1.xsd
wang520d 2007-09-12
  • 打赏
  • 举报
回复
看到这个帖子 想起我组长跟我说过的一句话 :“泛型替代了DATASET有了泛型不需要DATASET了” 大家对这句话给点意见
fphuang 2007-09-12
  • 打赏
  • 举报
回复
支持005兄的观点,用途不一样,不好放到一起比较
viena 2007-09-12
  • 打赏
  • 举报
回复
这些似乎与性能没有必然联系~
flyingfz 2007-09-12
  • 打赏
  • 举报
回复
mark
Jinglecat 2007-09-12
  • 打赏
  • 举报
回复
是否记得数据结构中的 数组/列表 ? 记得动态列表?

IList 就是定义这么一组基本的接口,添加、删除 ....

ArrayList 有 .net 类库提供,实现 IList,并扩充提供常见的实用功能,如排序,搜索等


DataSet 是一个数据集,内存中的数据库,可包含多个 DataTable

DataTable 是二维表( List 是一维的)

假如你需要,基于类似关系数据库的查询/删除/更新,使用 DataTable ,

假如你使用 List (其实是数组),那么如果类型是具体的负责对象,如一个自定义的 User,
那么查询,你就得为 List 接口实现 Comparer 等接口了
加载更多回复(7)
一、使用对象关系映射组件Kenly.DBFramework.dll不用编写任何SQL或者存储过程即可实现下列功能: 1、数据表、视图和存储过程与对象之间的转换。 2、数据表、视图的自定义条件查询。 3、数据表、视图的分页查询。 4、根据ID、主键或自定义条件对数据表进行增、删、改操作。 5、实现一对一、一对多、多对一和多对多的关系映射。 6、支持单个对象和多个对象之间的事务控制。 7、支持查询结果排序。 8、支持查询表达式生成。 9、支持延迟加载。 二、代码生成器 1、根据指定的数据库连接,自动生成数据表、视图和存储过程对应的对象代码(C#代码)。 2、自动生成相关的工程文件,生成完整的业务层项目文件。 3、可以帮助生成自定义查询方法。 4、支持SQLServer2000、SQLServer2005和Oracle代码生成插件,支持插件扩展。 提供 1、对象关系映射组件: Kenly.DBFramework.dll 2、代码生成器源码:Xsd2CS。 3、代码生成器插件源码(支持SQLServer2000、SQLServer2005和Oracle):Plugin。 4、使用手册:DBFramework.Manual V4.5.3.pdf。 主要API: public abstract class ViewGateway where T: new() { // Methods static ViewGateway(); protected ViewGateway(); protected static int Count(); protected static int Count(string condition); protected static List CountGroup(string groupBy); protected static List CountGroup(string condition, string groupBy); public static List CreateInstances(int count); protected static List Distinct(string columnName); protected static List Distinct(string columnName, string condition); protected static List Distinct(string columnName, string condition, bool ignoreNull); protected static bool Exists(string condition); public bool ExistsById(); public bool ExistsByPK(); protected static List Find(PagingArg pagingArg, params string[] propertyNames); protected static List Find(string condition, params string[] propertyNames); protected static List Find(PagingArg pagingArg, bool sqlServer2000, params string[] propertyNames); protected static List Find(string condition, PagingArg pagingArg, params string[] propertyNames); protected static List Find(string condition, PagingArg pagingArg, bool sqlServer2000, params string[] propertyNames); protected static List FindAll(params string[] propertyNames); protected static void FindTop(T firstOne); protected static List FindTop(int topCount, params string[] propertyNames); protected static void FindTop(string condition, T firstOne); protected static List FindTop(string condition, int topCount, params string[] propertyNames); protected static void InitializeGateway(GatewayConfig config); protected static void InitializeGateway(DatabaseType dbType, string connectionString); protected void InitializeInstance(T entity); protected static object Max(string columnName); protected static object Max(string columnName, string condition); protected static List MaxGroup(string columnName, string groupBy); protected static List MaxGroup(string columnName, string condition, string groupBy); protected static object Min(string columnName); protected static object Min(string columnName, string condition); protected static List MinGroup(string columnName, string groupBy); protected static List MinGroup(string columnName, string condition, string groupBy); protected static DataTable Query(PagingArg pagingArg, params string[] propertyNames); protected static DataTable Query(string condition, params string[] propertyNames); protected static DataTable Query(PagingArg pagingArg, bool sqlServer2000, params string[] propertyNames); protected static DataTable Query(string condition, PagingArg pagingArg, params string[] propertyNames); protected static DataTable Query(string condition, PagingArg pagingArg, bool sqlServer2000, params string[] propertyNames); protected static DataTable QueryAll(params string[] propertyNames); protected static DataTable QueryTop(int topCount, params string[] propertyNames); protected static DataTable QueryTop(string condition, int topCount, params string[] propertyNames); public ArrayList RetrieveAssociations(); public ArrayList RetrieveAssociations(Type elementType); public ArrayList RetrieveAssociations(params Type[] elementTypes); public void RetrieveById(); public void RetrieveByPK(); protected internal virtual void RetrieveBySql(string sql); public void ShadowCopyTo(object targetEntity); public void ShadowCopyTo(T targetEntity); protected static double Sum(string columnName); protected static double Sum(string columnName, string condition); protected static List SumGroup(string columnName, string groupBy); protected static List SumGroup(string columnName, string condition, string groupBy); public static string ToColumnName(string propertyName); public static T ToObject(DataRow adaptedRow); public static List ToObjects(DataTable adaptedTable); public static List ToObjects(DataRow[] adaptedRows); public static string ToPropertyName(string columnName); public static DataTable ToTable(IList entities); public static DataTable ToTable(params T[] entities); public static DataTable ToTable(bool isAdapted, params T[] entities); public static DataTable ToTable(bool isAdapted, IList entities); // Properties protected internal static string CommandText { get; } protected internal static GatewayConfig Config { get; } internal T Entity { get; set; } public object EntityId { get; } public object PrimaryKey { get; } protected static Order SortedOrder { get; set; } } public abstract class TableGateway : ViewGateway where T: TableGateway, new() { // Methods static TableGateway(); protected TableGateway(); public int AddNew(); public static int AddNew(IList entities); public static int AddNew(T entity); public int AddNew(bool returnIdentity); public static int AddNew(T entity, bool returnIdentity); public static int AddNew(IList entities, out Transaction transaction); public static int AddNew(IList entities, bool returnIdentity); public static int AddNew(T entity, out Transaction transaction); public static int AddNew(IList entities, bool returnIdentity, out Transaction transaction); public static int AddNew(T entity, bool returnIdentity, out Transaction transaction); public IDbTransaction BeginTransaction(); public IDbTransaction BeginTransaction(IsolationLevel isolationLevel); public IDbTransaction BeginTransaction(double activeTime); public IDbTransaction BeginTransaction(IsolationLevel isolationLevel, double activeTime); public bool Commit(); protected static int Delete(string condition); protected static int Delete(string condition, out Transaction transaction); public int DeleteById(); public static int DeleteById(T entity); public static int DeleteById(IList entities); public static int DeleteById(IList entities, out Transaction transaction); public static int DeleteById(T entity, out Transaction transaction); public int DeleteByPK(); public static int DeleteByPK(T entity); public static int DeleteByPK(IList entities); public static int DeleteByPK(IList entities, out Transaction transaction); public static int DeleteByPK(T entity, out Transaction transaction); protected void OnPropertyChanged(MethodBase propertyMethod); protected void OnPropertyChanged(string propertyName); protected internal override void RetrieveBySql(string sql); public bool Rollback(); protected static int Update(T entity, string condition); protected static int Update(T entity, string condition, out Transaction transaction); public int UpdateById(); public static int UpdateById(IList entities); public static int UpdateById(T entity); public static int UpdateById(T entity, out Transaction transaction); public static int UpdateById(IList entities, out Transaction transaction); public int UpdateByPK(); public static int UpdateByPK(IList entities); public static int UpdateByPK(T entity); public static int UpdateByPK(IList entities, out Transaction transaction); public static int UpdateByPK(T entity, out Transaction transaction); // Properties public bool Changed { get; } public List ChangedPropertyNames { get; } } public class StoredProcedure : IStoredProcedure { public bool BeginTransaction(); public void CloseReader(IDataReader reader); public bool Commit(); public DataSet ExecuteDataSet(); public DataTable ExecuteDataTable(); public DataTable ExecuteDataTable(); public List ExecuteEntity(); public int ExecuteNonQuery(); public IDataReader ExecuteReader(); public object ExecuteScalar(); protected static void InitializeGateway(GatewayConfig config); protected static void InitializeGateway(DatabaseType dbType, string connectionString); protected void InitializeInstance(T entity); public bool Rollback(); } public class AggregateEntity where T: AggregateEntity, new() { public static List Execute(); protected static List Execute(string condition); public static DataTable ExecuteDataTable(); protected static DataTable ExecuteDataTable(string condition); protected static void InitializeGateway(GatewayConfig config); protected static void InitializeGateway(DatabaseType dbType, string connectionString); // Properties protected static Order SortedOrder { get; set; } } public static class EntityMapper { // Methods public static void AdaptToDatabase(DataTable adaptedTable); public static void AdaptToEntity(DataTable rawTable); public static void CopyToEntities(IList entities, IList adaptedRows); public static void CopyToEntities(IList entities, DataTable adaptedTable); public static void CopyToEntity(T entity, DataRow row); public static List CreateEntities(int count); public static DataTable CreateTable(); public static DataTable CreateTable(bool isAdapted); public static string ToColumnName(string propertyName); public static List ToEntities(IList adaptedRows); public static List ToEntities(DataTable table); public static T ToEntity(DataRow adaptedRow); public static string ToPropertyName(string columnName); public static DataTable ToTable(IList entities); public static DataTable ToTable(params T[] entities); public static DataTable ToTable(bool isAdapted, params T[] entities); public static DataTable ToTable(bool isAdapted, IList entities); } public static class EntityUtility { // Methods public static List Inherit(IList entities); public static T Inherit(object entity); public static T Inherit(Tbase baseEntity, TransformAction method); public static List Inherit(IList baseEntities, TransformAction method); public static void ShadowCopy(IList targetEntities, IList sourceEntities); public static void ShadowCopy(object targetEntity, object sourceEntity); }
对象关系映射架构(DBFramework)及代码生成器源码 一、使用对象关系映射组件Kenly.DBFramework.dll不用编写任何SQL或者存储过程即可实现下列功能: 1、数据表、视图和存储过程与对象之间的转换。 2、数据表、视图的自定义条件查询。 3、数据表、视图的分页查询。 4、根据ID、主键或自定义条件对数据表进行增、删、改操作。 5、实现一对一、一对多、多对一和多对多的关系映射。 6、支持单个对象和多个对象之间的事务控制。 7、支持查询结果排序。 8、支持查询表达式生成。 9、支持延迟加载。 二、代码生成器 1、根据指定的数据库连接,自动生成数据表、视图和存储过程对应的对象代码(C#代码)。 2、自动生成相关的工程文件,生成完整的业务层项目文件。 3、可以帮助生成自定义查询方法。 4、支持SQLServer2000、SQLServer2005和Oracle代码生成插件,支持插件扩展。 提供 1、对象关系映射组件: Kenly.DBFramework.dll 2、代码生成器源码:CodeHelper。 3、代码生成器插件源码(支持SQLServer2000、SQLServer2005和Oracle):Plugin。 4、使用手册:DBFramework.Manual V4.5.3.pdf。 主要API: public abstract class ViewGateway where T: new() { // Methods static ViewGateway(); protected ViewGateway(); protected static int Count(); protected static int Count(string condition); protected static List CountGroup(string groupBy); protected static List CountGroup(string condition, string groupBy); public static List CreateInstances(int count); protected static List Distinct(string columnName); protected static List Distinct(string columnName, string condition); protected static List Distinct(string columnName, string condition, bool ignoreNull); protected static bool Exists(string condition); public bool ExistsById(); public bool ExistsByPK(); protected static List Find(PagingArg pagingArg, params string[] propertyNames); protected static List Find(string condition, params string[] propertyNames); protected static List Find(PagingArg pagingArg, bool sqlServer2000, params string[] propertyNames); protected static List Find(string condition, PagingArg pagingArg, params string[] propertyNames); protected static List Find(string condition, PagingArg pagingArg, bool sqlServer2000, params string[] propertyNames); protected static List FindAll(params string[] propertyNames); protected static void FindTop(T firstOne); protected static List FindTop(int topCount, params string[] propertyNames); protected static void FindTop(string condition, T firstOne); protected static List FindTop(string condition, int topCount, params string[] propertyNames); protected static void InitializeGateway(GatewayConfig config); protected static void InitializeGateway(DatabaseType dbType, string connectionString); protected void InitializeInstance(T entity); protected static object Max(string columnName); protected static object Max(string columnName, string condition); protected static List MaxGroup(string columnName, string groupBy); protected static List MaxGroup(string columnName, string condition, string groupBy); protected static object Min(string columnName); protected static object Min(string columnName, string condition); protected static List MinGroup(string columnName, string groupBy); protected static List MinGroup(string columnName, string condition, string groupBy); protected static DataTable Query(PagingArg pagingArg, params string[] propertyNames); protected static DataTable Query(string condition, params string[] propertyNames); protected static DataTable Query(PagingArg pagingArg, bool sqlServer2000, params string[] propertyNames); protected static DataTable Query(string condition, PagingArg pagingArg, params string[] propertyNames); protected static DataTable Query(string condition, PagingArg pagingArg, bool sqlServer2000, params string[] propertyNames); protected static DataTable QueryAll(params string[] propertyNames); protected static DataTable QueryTop(int topCount, params string[] propertyNames); protected static DataTable QueryTop(string condition, int topCount, params string[] propertyNames); public ArrayList RetrieveAssociations(); public ArrayList RetrieveAssociations(Type elementType); public ArrayList RetrieveAssociations(params Type[] elementTypes); public void RetrieveById(); public void RetrieveByPK(); protected internal virtual void RetrieveBySql(string sql); public void ShadowCopyTo(object targetEntity); public void ShadowCopyTo(T targetEntity); protected static double Sum(string columnName); protected static double Sum(string columnName, string condition); protected static List SumGroup(string columnName, string groupBy); protected static List SumGroup(string columnName, string condition, string groupBy); public static string ToColumnName(string propertyName); public static T ToObject(DataRow adaptedRow); public static List ToObjects(DataTable adaptedTable); public static List ToObjects(DataRow[] adaptedRows); public static string ToPropertyName(string columnName); public static DataTable ToTable(IList entities); public static DataTable ToTable(params T[] entities); public static DataTable ToTable(bool isAdapted, params T[] entities); public static DataTable ToTable(bool isAdapted, IList entities); // Properties protected internal static string CommandText { get; } protected internal static GatewayConfig Config { get; } internal T Entity { get; set; } public object EntityId { get; } public object PrimaryKey { get; } protected static Order SortedOrder { get; set; } } public abstract class TableGateway : ViewGateway where T: TableGateway, new() { // Methods static TableGateway(); protected TableGateway(); public int AddNew(); public static int AddNew(IList entities); public static int AddNew(T entity); public int AddNew(bool returnIdentity); public static int AddNew(T entity, bool returnIdentity); public static int AddNew(IList entities, out Transaction transaction); public static int AddNew(IList entities, bool returnIdentity); public static int AddNew(T entity, out Transaction transaction); public static int AddNew(IList entities, bool returnIdentity, out Transaction transaction); public static int AddNew(T entity, bool returnIdentity, out Transaction transaction); public IDbTransaction BeginTransaction(); public IDbTransaction BeginTransaction(IsolationLevel isolationLevel); public IDbTransaction BeginTransaction(double activeTime); public IDbTransaction BeginTransaction(IsolationLevel isolationLevel, double activeTime); public bool Commit(); protected static int Delete(string condition); protected static int Delete(string condition, out Transaction transaction); public int DeleteById(); public static int DeleteById(T entity); public static int DeleteById(IList entities); public static int DeleteById(IList entities, out Transaction transaction); public static int DeleteById(T entity, out Transaction transaction); public int DeleteByPK(); public static int DeleteByPK(T entity); public static int DeleteByPK(IList entities); public static int DeleteByPK(IList entities, out Transaction transaction); public static int DeleteByPK(T entity, out Transaction transaction); protected void OnPropertyChanged(MethodBase propertyMethod); protected void OnPropertyChanged(string propertyName); protected internal override void RetrieveBySql(string sql); public bool Rollback(); protected static int Update(T entity, string condition); protected static int Update(T entity, string condition, out Transaction transaction); public int UpdateById(); public static int UpdateById(IList entities); public static int UpdateById(T entity); public static int UpdateById(T entity, out Transaction transaction); public static int UpdateById(IList entities, out Transaction transaction); public int UpdateByPK(); public static int UpdateByPK(IList entities); public static int UpdateByPK(T entity); public static int UpdateByPK(IList entities, out Transaction transaction); public static int UpdateByPK(T entity, out Transaction transaction); // Properties public bool Changed { get; } public List ChangedPropertyNames { get; } } public class StoredProcedure : IStoredProcedure { public bool BeginTransaction(); public void CloseReader(IDataReader reader); public bool Commit(); public DataSet ExecuteDataSet(); public DataTable ExecuteDataTable(); public DataTable ExecuteDataTable(); public List ExecuteEntity(); public int ExecuteNonQuery(); public IDataReader ExecuteReader(); public object ExecuteScalar(); protected static void InitializeGateway(GatewayConfig config); protected static void InitializeGateway(DatabaseType dbType, string connectionString); protected void InitializeInstance(T entity); public bool Rollback(); } public class AggregateEntity where T: AggregateEntity, new() { public static List Execute(); protected static List Execute(string condition); public static DataTable ExecuteDataTable(); protected static DataTable ExecuteDataTable(string condition); protected static void InitializeGateway(GatewayConfig config); protected static void InitializeGateway(DatabaseType dbType, string connectionString); // Properties protected static Order SortedOrder { get; set; } } public static class EntityMapper { // Methods public static void AdaptToDatabase(DataTable adaptedTable); public static void AdaptToEntity(DataTable rawTable); public static void CopyToEntities(IList entities, IList adaptedRows); public static void CopyToEntities(IList entities, DataTable adaptedTable); public static void CopyToEntity(T entity, DataRow row); public static List CreateEntities(int count); public static DataTable CreateTable(); public static DataTable CreateTable(bool isAdapted); public static string ToColumnName(string propertyName); public static List ToEntities(IList adaptedRows); public static List ToEntities(DataTable table); public static T ToEntity(DataRow adaptedRow); public static string ToPropertyName(string columnName); public static DataTable ToTable(IList entities); public static DataTable ToTable(params T[] entities); public static DataTable ToTable(bool isAdapted, params T[] entities); public static DataTable ToTable(bool isAdapted, IList entities); } public static class EntityUtility { // Methods public static List Inherit(IList entities); public static T Inherit(object entity); public static T Inherit(Tbase baseEntity, TransformAction method); public static List Inherit(IList baseEntities, TransformAction method); public static void ShadowCopy(IList targetEntities, IList sourceEntities); public static void ShadowCopy(object targetEntity, object sourceEntity); }

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧