8,494
社区成员




namespace Model.EF
{
public class EntityRepository<TEntity> : IRepository<TEntity>
where TEntity : class, IEntity
{
private readonly NerdDinners m_dbContext;
private ObjectContext context;
public EntityRepository()
{
m_dbContext =new NerdDinners();
}
protected virtual void OnLoaded(TEntity entity)
{
}
protected DbSet<TEntity> DbSet
{
get { return m_dbContext.Set<TEntity>(); }
}
public IEnumerable<TEntity> FindAll()
{
return DbSet;
}
public List<TEntity> FindBy(string where)
{
var list = DbSet.SqlQuery(where);
return list.ToList();
}
public List<TEntity> FindPageList(string where, int pageIndex, int pageSize, out int totalRecord)
{
totalRecord = 0;
var list = DbSet.SqlQuery(where).Skip((pageIndex - 1) * pageSize).Take(pageSize);
totalRecord = DbSet.SqlQuery(where).Count();
return list.ToList();
}
public TEntity FindById(int id)
{
return DbSet.SingleOrDefault(entity => entity.ID== id);
}
public void Add(TEntity entity)
{
DbSet.Add(entity);
m_dbContext.SaveChanges();
}
public void Delete(TEntity entity)
{
var entry = m_dbContext.Entry(entity);
if (entry.State == EntityState.Detached)
{
//DbSet.Attach(entity);
entry.State = EntityState.Deleted;
//var entityToUpdate = FindById(entity.Id);
//EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<TEntity, TEntity>().Map(entity, entityToUpdate);
}
m_dbContext.SaveChanges();
}
public void Update(TEntity entity)
{
var entry = m_dbContext.Entry(entity);
if (entry.State == EntityState.Detached)
{
//DbSet.Attach(entity);
entry.State = EntityState.Modified;
//var entityToUpdate = FindById(entity.Id);
//EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<TEntity, TEntity>().Map(entity, entityToUpdate);
}
m_dbContext.SaveChanges();
}
public void Update(TEntity entity, params string[] fileds)
{
var entry = m_dbContext.Entry(entity);
Type Ttype = typeof(TEntity);
var entityToUpdate = FindById(entity.ID);
context.AttachTo(Ttype.Name, entityToUpdate);
var stateEntry = context.ObjectStateManager.GetObjectStateEntry(entity);
for (int i = 0; i < fileds.Length - 1; i++)
{
stateEntry.SetModifiedProperty(fileds[i]);
}
m_dbContext.SaveChanges();
}
}
OrderDBEntities _db = new OrderDBEntities();
public t_Customer Create_t_Customer()
{
t_Customer cust = new t_Customer()
{
f_CustomerID = 1,
f_Email = "sidecore.qq.com",
f_Tel = "02022222222",
};
return cust;
}
public void ModifyCust3(t_Customer cust)
{
_db.t_Customer.Attach(cust);
ObjectStateEntry ose = _db.ObjectStateManager.GetObjectStateEntry(cust);
ose.SetModified();
ose.SetModifiedProperty("f_Email");
ose.SetModifiedProperty("f_Tel");
_db.SaveChanges();
}
//测试该方法,修改客户ID为1的客户的电话号码和邮箱地址
public void 练习3_7_3()
{
ModifyCust3(Create_t_Customer());
}
[HttpPost]
public ActionResult Index(jway_category model) {
var entity = new jway_category();
entity.Id = 1;
//ViewBag.Message = user.GetName();
using (var db = new jwaycmsContext()) {
try {
db.jway_category.Attach(entity);
entity.Title = model.Title;
db.SaveChanges();
return RedirectToAction("Index");
} catch (Exception ex) {
var t = ex.InnerException;
throw new Exception();
}
}
}
//取得模型,循环属性,按需更新
public virtual void Update(T t)
{
var model= this.GetModel(t);
foreach (System.Reflection.PropertyInfo item in t.GetType().GetProperties()
.Where(p => p.CanRead&&p.CanWrite&&p.GetCustomAttributes(typeof(DataMemberAttribute), false).Length > 0))
{
string name = item.Name;
object value = item.GetValue(t,null);
//判断属性为值类型或是字符串类型
if (item.PropertyType.IsValueType || item.PropertyType.Name.StartsWith("String"))
{
item.SetValue(model, value,null);
}
}
DB.SaveChanges();
}
#region 修改客户信息
T_Company t_company = EF.T_Company.Where(a => a.ID == id).SingleOrDefault();
if (t_company != null)
{
t_company.Name = cm.Name;
t_company.Address = cm.Address;
t_company.ZipCode = cm.ZipCode;
t_company.Province_ID = cm.Province_ID;
t_company.City_ID = cm.City_ID;
t_company.UpdateTime = DateTime.Now;
t_company.UpdateUser_id = UserInfo.UserID;
EF.SaveChanges();
AddLog("修改", "公司ID:" + t_company.ID.ToString());
}