entity-framework – 实体框架 – 删除Oracle 10g中的实体{由于
发布时间:2021-01-12 14:52:51 所属栏目:站长百科 来源:网络整理
导读:我尝试在Oracle 10g上的Entity Framework中使用Repository模式.我简化了我的代码: 这是SQL代码: -- Create tablecreate table TESTTABLE( MODULE_UNIQUE_ID VARCHAR2(32) not null,PANEL_STATUS VARCHAR2(8) not null)tablespace SYSTEM pctfree 10 pctuse
我尝试在Oracle 10g上的Entity Framework中使用Repository模式.我简化了我的代码: 这是SQL代码: -- Create table create table TESTTABLE ( MODULE_UNIQUE_ID VARCHAR2(32) not null,PANEL_STATUS VARCHAR2(8) not null ) tablespace SYSTEM pctfree 10 pctused 40 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); -- Create/Recreate primary,unique and foreign key constraints alter table TESTTABLE add constraint TESTTABLE_PK_01 unique (MODULE_UNIQUE_ID) using index tablespace SYSTEM pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); 我创建了简单的存储库类: public interface IRepository<TEntity,TCtx> { TCtx Session { get;} void Add(TEntity entity); void AddOrAttach(TEntity entity); void Delete(TEntity entity); int Save(); TEntity SelectByKey(string colName,string key); } public class Repository<TEntity,TCtx> : IRepository<TEntity,TCtx>,IDisposable where TEntity : EntityObject where TCtx : ObjectContext { #region Private fields private TCtx _ctx; private string _keyProperty = "ID"; public int Save() { return _ctx.SaveChanges(); } public TEntity SelectByKey(string colName,string key) { KeyProperty = colName; // First we define the parameter that we are going to use the clause. var xParam = Expression.Parameter(typeof(TEntity),typeof(TEntity).Name); MemberExpression leftExpr = Expression.Property(xParam,KeyProperty); Expression rightExpr = Expression.Constant(key); BinaryExpression binaryExpr = Expression.Equal(leftExpr,rightExpr); //Create Lambda Expression for the selection Expression<Func<TEntity,bool>> lambdaExpr = Expression.Lambda<Func<TEntity,bool>> (binaryExpr,new ParameterExpression[] { xParam }); //Searching .... //IList<TEntity> resultCollection = ((IRepository<TEntity,TCtx>)this).SelectAll(new Specification<TEntity>(lambdaExpr)); //if (null != resultCollection && resultCollection.Count() > 0) //{ // //return valid single result // return resultCollection.First(); / |