📄 ormwriter.cs
字号:
strWOA = " OR ";
}
}
}
strSQL = string.Format(strSQL, new string[] { strTablename, strWHERE });
using (SqlConnection conn = new SqlConnection(PubFuncs.ConnectionStr))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL;
using (SqlDataReader rdr = cmd.ExecuteReader())
{
if (rdr.Read())
{
throw new Exception("下列字段值不能重复:" + strFieldMessage);
}
}
}
}
public object Update(object ModelObject)
{
using (SqlConnection conn = new SqlConnection(PubFuncs.ConnectionStr))
{
conn.Open();
SqlTransaction trans = conn.BeginTransaction();
ModelObject = Update(trans, ModelObject);
trans.Commit();
return ModelObject;
}
}
/// <summary>
/// 修改记录
/// </summary>
/// <param name="ModelObject">记录Model</param>
/// <returns>记录Model</returns>
public object Update(SqlTransaction trans, object ModelObject)
{
//CheckValidate(ModelObject);
int iObjectID = 0;
List<SqlParameter> Params = new List<SqlParameter>();
string strSQL = PubFuncs.GetUpdateSQL(ModelObject, ref Params);
SqlCommand cmd = new SqlCommand();
cmd.Connection = trans.Connection;
cmd.Transaction = trans;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL;
foreach (SqlParameter Param in Params)
{
cmd.Parameters.Add(Param);
}
if (strSQL.Contains("INSERT"))
{
//表示是插入
using (SqlDataReader rdr = cmd.ExecuteReader())
{
rdr.Read();
if (rdr.GetInt32(1) != 0)
throw new ApplicationException("插入新记录" + ModelObject.ToString() + "出错,SQL错误号:" + rdr.GetInt32(1)); ;
cmd.Parameters.Clear();
iObjectID = rdr.GetInt32(0); //返回ID
//设置对象的Key值
PubFuncs.SetKeyValue(ModelObject, iObjectID);
}
}
else
{
//表示是修改,根据SQL_UPDATE语句修改数据库
int iReturnNumber = cmd.ExecuteNonQuery();
if (iReturnNumber <= 0)
{
throw new ApplicationException("修改" + ModelObject.ToString() + "的时候出错。");
}
iObjectID = Convert.ToInt32(PubFuncs.GetKeyValue(ModelObject));
}
cmd.Parameters.Clear();
#region 保存子对象
PropertyInfo[] props = ModelObject.GetType().GetProperties();
MiniORMAttribute.SubDataObjectAttribute SubDataAttr = null;
object[] CustomAttributes;
foreach (PropertyInfo prop in props)
{
CustomAttributes = prop.GetCustomAttributes(typeof(MiniORMAttribute.SubDataObjectAttribute), false);
if (CustomAttributes.Length > 0)
{
SubDataAttr = CustomAttributes[0] as MiniORMAttribute.SubDataObjectAttribute;
if (SubDataAttr != null)
{
switch (SubDataAttr.FieldType)
{
case MiniORMAttribute.SubDataObjectFieldType.Object:
{
object objModel = prop.GetValue(ModelObject, null);
//设置objModel的Foreignkey为当前新记录的ID
PubFuncs.SetForeignkeyValue(objModel, iObjectID);
//插入对象
Update(trans, objModel);
}
break;
//case MiniORMAttribute.SubDataObjectFieldType.MyHashTable:
// {
// System.Collections.ICollection colValues = ((INS.Model.MyHashTable)prop.GetValue(ModelObject, null)).Values;
// foreach (object obj in colValues)
// {
// //设置objModel的Foreignkey为当前新记录的ID
// PubFuncs.SetForeignkeyValue(obj, iObjectID);
// //插入对象
// Update(trans, obj);
// }
// }
// break;
case MiniORMAttribute.SubDataObjectFieldType.HashTable:
{
System.Collections.ICollection colValues = ((System.Collections.Hashtable)prop.GetValue(ModelObject, null)).Values;
foreach (object obj in colValues)
{
//设置objModel的Foreignkey为当前新记录的ID
PubFuncs.SetForeignkeyValue(obj, iObjectID);
//插入对象
Update(trans, obj);
}
}
break;
case MiniORMAttribute.SubDataObjectFieldType.List:
{
System.Collections.IList list = (System.Collections.IList)prop.GetValue(ModelObject, null);
foreach (object obj in list)
{
//设置objModel的Foreignkey为当前新记录的ID
PubFuncs.SetForeignkeyValue(obj, iObjectID);
//插入对象
Update(trans, obj);
}
}
break;
case MiniORMAttribute.SubDataObjectFieldType.ArrayList:
{
System.Collections.ArrayList list = (System.Collections.ArrayList)prop.GetValue(ModelObject, null);
foreach (object obj in list)
{
//设置objModel的Foreignkey为当前新记录的ID
PubFuncs.SetForeignkeyValue(obj, iObjectID);
//插入对象
Update(trans, obj);
}
}
break;
}
}
}
}
#endregion
return ModelObject;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -