我的项目中有2个表:
TableEnvelope{
ID int primary key,
EnvelopeNumber int,
.
.
.
}
TableCheck{
ID int primary key,
CMC7 varchar
.
.
.
}
我必须将每个文档“阻止”给特定用户,因为2个用户看不到相同的信息。 所以我有我的桌子:
TableLock{
ID int primary key,
IDEnvelope int,
IDCheck int
UserId int
.
.
.
}
我正在尝试使用Generic方法在我的表中取N行并锁定它,但我不能。
public IQueryable<TEntity> LockDocument<TEntity>(IQueryable<TEntity> colEntity, int countRows)
{
TEntity objEntity = default(TEntity);
Database db = new Database();
var vQuery = (from entity in db.CreateObjectSet<TEntity>()
Join tableLock in db.TableLock
// I have problems here.
on entity.ID equals tableLock.IDEntity
where entity.ID not in tableLock.IDEntity).select().Take(countRows)
}
我该怎么做? 提前谢谢。
答案 0 :(得分:2)
您必须限制您的TEntity以向您的方法提供其他信息。例如,您可以定义interface:
public interface IEntity
{
int ID { get; }
}
并且要将要传递给方法的所有实体实现此接口。现在,您可以将方法的定义更改为:
public IQueryable<TEntity> LockDocument<TEntity>(IQueryable<TEntity> colEntity,
int countRows)
where TEntity : IEntity
{ ... }
这将告诉您的方法它只接受实现IEntity
的类型,并且您可以在方法中使用IEntity
定义的任何属性或方法=您将有权访问entity.ID
。< / p>