entity-framework – 实体框架 – 删除Oracle 10g中的实体{由于
发布时间:2021-01-13 12:15:01 所属栏目:百科 来源:网络整理
导读:我尝试在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 pctu
|
我尝试在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();
/ |


