本文整理汇总了C#中IEntity.SetItem方法的典型用法代码示例。如果您正苦于以下问题:C# IEntity.SetItem方法的具体用法?C# IEntity.SetItem怎么用?C# IEntity.SetItem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IEntity
的用法示例。
在下文中一共展示了IEntity.SetItem方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SetGuid
/// <summary>指定了默认值而没有赋值的Guid字段附上默认值</summary>
/// <param name="entity"></param>
public virtual void SetGuid(IEntity entity)
{
var fis = GetGuidFieldItems(entity.GetType());
if (fis != null & fis.Length > 0)
{
foreach (var item in fis)
{
// 判断是否设置了数据
if (!entity.Dirtys[item.Name])
{
// 如果没有设置,这里给它设置
if (item.Type == typeof(Guid))
entity.SetItem(item.Name, Guid.NewGuid());
else
entity.SetItem(item.Name, Guid.NewGuid().ToString());
}
}
}
}
示例2: SetEntityItem
/// <summary>设置实体类值</summary>
/// <param name="entity"></param>
/// <param name="field"></param>
/// <param name="value"></param>
void SetEntityItem(IEntity entity, FieldItem field, Object value)
{
// 先转为目标类型
value = TypeX.ChangeType(value, field.Type);
// 如果是字符串,并且为空,则让它等于实体里面的值,避免影响脏数据
if (field.Type == typeof(String) && String.IsNullOrEmpty((String)value) && String.IsNullOrEmpty((String)entity[field.Name])) value = entity[field.Name];
entity.SetItem(field.Name, value);
}
示例3: Insert
//#region 事件
///// <summary>设置实体Guid之前触发事件,通过Cancel控制是否取消Guid的自动设置</summary>
//public event EventHandler<EntityPersistEventArgs> OnSetGuid;
//Boolean AllowSetGuid(IEntity entity)
//{
// if (OnSetGuid != null)
// {
// var e = new EntityPersistEventArgs() { Entity = entity };
// OnSetGuid(this, e);
// return !e.Cancel;
// }
// return false;
//}
///// <summary>插入自增之前触发事件,通过Cancel控制是否插入自增</summary>
//public event EventHandler<EntityPersistEventArgs> OnInsertIdentity;
//Boolean AllowInsertIdentity(IEntity entity)
//{
// if (OnInsertIdentity != null)
// {
// var e = new EntityPersistEventArgs() { Entity = entity };
// OnInsertIdentity(this, e);
// return !e.Cancel;
// }
// return false;
//}
//#endregion
#region 添删改方法
/// <summary>插入</summary>
/// <param name="entity"></param>
/// <returns></returns>
public virtual Int32 Insert(IEntity entity)
{
var op = EntityFactory.CreateOperate(entity.GetType());
// 添加数据前,处理Guid
var fi = op.AutoSetGuidField;
if (fi != null)
{
//SetGuid(entity);
// 判断是否设置了数据
if (!entity.Dirtys[fi.Name])
{
// 如果没有设置,这里给它设置
if (fi.Type == typeof(Guid))
entity.SetItem(fi.Name, Guid.NewGuid());
else
entity.SetItem(fi.Name, Guid.NewGuid().ToString());
}
}
DbParameter[] dps = null;
var sql = SQL(entity, DataObjectMethodType.Insert, ref dps);
if (String.IsNullOrEmpty(sql)) return 0;
Int32 rs = 0;
//检查是否有标识列,标识列需要特殊处理
var field = op.Table.Identity;
var bAllow = op.AllowInsertIdentity;
if (field != null && field.IsIdentity && !bAllow)
{
Int64 res = dps != null && dps.Length > 0 ? op.InsertAndGetIdentity(sql, CommandType.Text, dps) : op.InsertAndGetIdentity(sql);
if (res > 0) entity[field.Name] = res;
rs = res > 0 ? 1 : 0;
}
else
{
if (bAllow)
{
var dal = DAL.Create(op.ConnName);
if (dal.DbType == DatabaseType.SqlServer)
{
// 如果所有字段都不是自增,则取消对自增的处理
if (op.Fields.All(f => !f.IsIdentity)) bAllow = false;
if (bAllow) sql = String.Format("SET IDENTITY_INSERT {1} ON;{0};SET IDENTITY_INSERT {1} OFF", sql, op.FormatName(op.TableName));
}
}
rs = dps != null && dps.Length > 0 ? op.Execute(sql, CommandType.Text, dps) : op.Execute(sql);
}
//清除脏数据,避免连续两次调用Save造成重复提交
if (entity.Dirtys != null) entity.Dirtys.Clear();
return rs;
}
示例4: ReadItem
/// <summary>外部=>实体,从外部读取指定实体字段的信息</summary>
/// <param name="entity">实体对象</param>
/// <param name="item">实体字段</param>
protected override void ReadItem(IEntity entity, FieldItem item)
{
Object v = GetRequestItem(item);
if (v == null) return;
if (v is String)
{
#region 检查数据类型是否满足目标类型,如果不满足则跳过,以免内部赋值异常导致程序处理出错
TypeCode code = Type.GetTypeCode(item.Type);
if (code >= TypeCode.Int16 && code <= TypeCode.UInt64)
{
Int64 n = 0;
if (!Int64.TryParse((String)v, out n)) return;
v = n;
}
else if (code == TypeCode.Single || code == TypeCode.Double)
{
Double d = 0;
if (!Double.TryParse((String)v, out d)) return;
v = d;
}
else if (code == TypeCode.Decimal)
{
Decimal d = 0;
if (!Decimal.TryParse((String)v, out d)) return;
v = d;
}
else if (code == TypeCode.Boolean)
{
Boolean b;
if (!Boolean.TryParse((String)v, out b)) return;
v = b;
}
else if (code == TypeCode.DateTime)
{
DateTime d;
if (!DateTime.TryParse((String)v, out d)) return;
v = d;
}
#endregion
entity.SetItem(item.Name, v);
}
else
{
// 处理上传的文件
HttpPostedFile file = v as HttpPostedFile;
if (file != null)
{
// 把文件内容读出来
if (file.ContentLength > MaxLength) throw new XCodeException("文件大小{0}超过了最大限制{1}!", file.ContentLength, MaxLength);
Byte[] bts = new Byte[file.ContentLength];
file.InputStream.Read(bts, 0, bts.Length);
if (item.Type == typeof(Byte[]))
entity.SetItem(item.Name, bts);
else if (item.Type == typeof(String))
entity.SetItem(item.Name, Convert.ToBase64String(bts));
}
}
}
示例5: ReadItem
/// <summary>外部=>实体,从外部读取指定实体字段的信息</summary>
/// <param name="entity">实体对象</param>
/// <param name="item">实体字段</param>
protected override void ReadItem(IEntity entity, FieldItem item)
{
Object obj = entity;
reader.ReadObject(item.Type, ref obj, null);
entity.SetItem(item.Name, obj);
}