EntityArrayToDataTable方法一个小小的局限

1 view
Skip to first unread message

goldp...@gmail.com

unread,
Nov 9, 2006, 12:50:48 AM11/9/06
to NBear Google Group
Entity.EntityArrayToDataTable方法需要传入一个实体数组,并根据实体数组的内容生成Table
可是如果当实体数组长度为0时,比如数据库刚刚建立,没有数据时,则方法会抛出异常,分析了源码,发现在实现中使用了objs[0]这样的语句,导致出错,
建议判断一下,如果长度为0,就换一种实现方法如:
通地反射取得数组内的元素类型,然后根据此类型构造DataTable
objs.GetType().GetElementType()

Teddy

unread,
Nov 9, 2006, 12:58:14 AM11/9/06
to NBear Google Group
EntityArrayToDataTable方法使用下面的Contract来约束输入参数objs的:
Check.Require(objs != null && objs.Length > 0, "ojs could
not be null or empty.");

也就是说,在参数objs为null 或
empty时,它会直接抛出异常。

建议使用者在调用该方法前,先判断一下输入参数是否为null或empty。

Teddy

"goldp...@gmail.com 写道:

上善若水

unread,
Nov 9, 2006, 5:33:11 AM11/9/06
to NBear Google Group
可是我的意思就是要返回一个包含架构的空Table啊!
如果我用Table来编辑数据,那么首先要返回一个Table,可是没有数据就不能返回Table就有点局限了.
我改成这样了
Check.Require(objs != null, "ojs could not be null or empty.");
EntityConfiguration ec = null;
if (objs.Length > 0)
{
ec = objs[0].GetEntityConfiguration();
}
else {
Type type = objs.GetType().GetElementType();
try
{
Entity entity = Activator.CreateInstance(type) as Entity;
ec = entity.GetEntityConfiguration();
}
catch (Exception)
{
throw;
}
}
Reply all
Reply to author
Forward
0 new messages