LambdaToSql/Realization/Updateable.cs
(开头部分) 6KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using LambdaToSql.FrameWork;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Linq.Expressions;
using LambdaToSql.Extended;
using Newtonsoft.Json;
using System.Diagnostics;
namespace LambdaToSql.Realization
{
internal class Updateable<T> : LambdaToSql.Interface.IUpdateable<T> where T : class, new()
{
public virtual LambdaToSql.EntityModel.DbContext Context { get; set; }
internal virtual LambdaToSql.EntityModel.UpdateEntity<T> Entity { get; set; }
public Updateable(LambdaToSql.EntityModel.DbContext context)
{
this.Context = context;
//this.Entity = new LambdaToSql.EntityModel.UpdateEntity<T>(this.Context);
string assemblyName = "LambdaToSql";
string fullTypeName = string.Format("LambdaToSql.EntityModel.{0}.{1}`1", this.Context.SqlType.ToString(), "UpdateEntity");
Type objType = Assembly.Load(assemblyName).GetType(fullTypeName);
Type type = objType.MakeGenericType(typeof(T));
Entity = (LambdaToSql.EntityModel.UpdateEntity<T>)Activator.CreateInstance(type, new object[] { this.Context });
}
public virtual LambdaToSql.Interface.IUpdateable<T> Update(T obj)
{
this.Entity.Obj = obj;
var tableName = this.Entity.TableName;
var properties = this.Entity.Properties;
var primaryName = this.Context.Table[tableName].PrimaryName;
var pi = properties.Where(ex => ex.Name == primaryName).FirstOrDefault();
object name = pi.Name;
string value = Convert.ToString(pi.GetValue(obj, null));
if (!string.IsNullOrEmpty(value))
{
var ParaName = "@para" + this.Entity.Parameters.Count();
if (this.Entity.Where.Length > 0)
{
this.Entity.Where.Append(" and ");
}
this.Entity.Where.Append(primaryName + "=" + ParaName);
this.Entity.Parameters.Add(new LambdaToSql.EntityModel.DataParameter(ParaName, value));
}
return this;
}
public virtual LambdaToSql.Interface.IUpdateable<T> UpdateColumns(Expression<Func<T, object>> exp)
{
后面还有 115 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
