星空网 > 软件开发 > 数据库

Clr静态数据Table

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

创建一个model:
Clr静态数据Table


再创建一个Entity:
Clr静态数据Table


打开SqlFunction类,编写table-valued函数:
Clr静态数据Table


可复制代码:

Clr静态数据TableClr静态数据Table
 [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
Clr静态数据Table


可复制代码:

Clr静态数据TableClr静态数据Table
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'Tvf_SiteInfor')  DROP FUNCTION Tvf_SiteInfor;GOIF EXISTS (SELECT * FROM sys.assemblies WHERE name = 'FruitClr')  DROP ASSEMBLY FruitClr;GOCREATE ASSEMBLY FruitClrFROM 'E:\FruitClr.dll' WITH PERMISSION_SET = SAFE;GOCREATE 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

 




原标题:Clr静态数据Table

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流