1
A
回答
3
定義您的數據上下文類的功能如下:
[TableFunction(Name="GetParentByID")]
public Table<Parent> GetParentByID(int? id)
{
return GetTable<Parent>(this, (MethodInfo)MethodBase.GetCurrentMethod(), id);
}
用法:
[Test]
public void Func2()
{
using (var db = new TestDbManager())
{
var q =
from c in db.Child
from p in db.GetParentByID(2)
select p;
q.ToList();
}
}
SQL:
SELECT
[t2].[ParentID],
[t2].[Value1]
FROM
[Child] [t1], [GetParentByID](2) [t2]
你也可以把它定義數據之外上下文:
public class Functions
{
private readonly IDataContext _ctx;
public Functions(IDataContext ctx)
{
_ctx = ctx;
}
[TableFunction]
public Table<Parent> GetParentByID(int? id)
{
return _ctx.GetTable<Parent>(this, (MethodInfo)(MethodBase.GetCurrentMethod()), id);
}
[TableExpression("{0} {1} WITH (TABLOCK)")]
public Table<T> WithTabLock<T>()
where T : class
{
return _ctx.GetTable<T>(this, ((MethodInfo)(MethodBase.GetCurrentMethod())).MakeGenericMethod(typeof(T)));
}
}
[Test]
public void Func1()
{
using (var db = new TestDbManager())
{
var q =
from p in new Functions(db).GetParentByID(1)
select p;
q.ToList();
}
}
[Test]
public void WithTabLock()
{
using (var db = new TestDbManager())
{
var q =
from p in new Functions(db).WithTabLock<Parent>()
select p;
q.ToList();
}
}
SQL:
SELECT
[p].[ParentID],
[p].[Value1]
FROM
[GetParentByID](1) [p]
SELECT
[p].[ParentID],
[p].[Value1]
FROM
[Parent] [p] WITH (TABLOCK)
相關問題
- 1. bltoolkit插入數據到表
- 2. 使用BLToolkit和Linq的標量函數
- 3. BlToolkit中存在
- 4. DataAccessor中的BLToolkit輸出參數
- 5. 在BLToolkit
- 6. 與BLToolkit
- 7. BLToolkit + T4代+ MySQL數據庫
- 8. BLToolkit對象作爲參數
- 9. BLToolkit協會的LINQ
- 10. 表值函數
- 11. 表值函數
- 12. 表值函數
- 13. BLToolKit:當執行
- 14. BLtoolkit協會
- 15. BLToolKit:如何插入對象列表?
- 16. Oracle表值函數
- 17. SQL表值函數
- 18. SQL Server中的表值函數;函數中的表是暫時的?
- 19. BLToolkit Oracle SP支持
- 20. BLToolkit MapValue未映射
- 21. 如何通過BlToolkit
- 22. 表變量在表中值函數
- 23. NHibernate的 - 表值函數
- 24. 帶cte的表值函數
- 25. SELECT語句中的SQL表值函數
- 26. EF 5中的表值函數?
- 27. 實體框架中的值表函數?
- 28. Haskell中匿名函數的真值表
- 29. BLToolKit生成錯誤的SQL
- 30. 使用MySQL連接的BLToolkit