码迷,mamicode.com
首页 > 其他好文 > 详细

Clr静态数据Table-Valued函数

时间:2015-04-04 12:16:22      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

前两天Insus.NET实现一个功能《在数据库中提供只读数据http://www.cnblogs.com/insus/p/4384411.html ,在数据库中为程序提供静态数据。
它是在Clr存储过程实现。现想使用另外一种方式来解决。如果提供这些静态数需要与其它数据结合Join等,这样象前面的存储过程,有些不太好操作。那我们可以把它实现在table-valued function。

创建一个model:
技术分享


再创建一个Entity:
技术分享


打开SqlFunction类,编写table-valued函数:
技术分享


可复制代码:

技术分享
 [SqlFunction(DataAccess = DataAccessKind.None,
                FillRowMethodName = "FillRow_1A",
                TableDefinition = "Id TINYINT,Name NVARCHAR(30), [key] NVARCHAR(30)")
   ]
    public static IEnumerable Tvf_SiteInfor()
    {
        FruitEntity fe = new FruitEntity();
        return fe.GetData();       
    }

    private static void FillRow_1A(object source, out SqlByte id, out SqlChars name, out SqlChars key)
    {
        Si obj = (Si)source;
        id = new SqlByte(obj.Id);
        name = new SqlChars(obj.Name);
        key = new SqlChars(obj.Key);
    }
View Code


部署至SQL:
技术分享


可复制代码:

技术分享
IF EXISTS (SELECT * FROM sys.objects WHERE name = Tvf_SiteInfor)
    DROP FUNCTION Tvf_SiteInfor;
GO

IF EXISTS (SELECT * FROM sys.assemblies WHERE name = FruitClr)
    DROP ASSEMBLY FruitClr;
GO

CREATE ASSEMBLY FruitClr
FROM E:\FruitClr.dll 
WITH PERMISSION_SET = SAFE;
GO

CREATE FUNCTION Tvf_SiteInfor() 
RETURNS TABLE(
    Id TINYINT,
    [Name] NVARCHAR(30),
    [key] NVARCHAR(50)
) 
AS EXTERNAL NAME [FruitClr].UserDefinedFunctions.Tvf_SiteInfor; 
GO
View Code


执行结果:
技术分享

 

Clr静态数据Table-Valued函数

标签:

原文地址:http://www.cnblogs.com/insus/p/4391876.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!