MSSQL:C# 函数可以实现视图吗?
Posted
技术标签:
【中文标题】MSSQL:C# 函数可以实现视图吗?【英文标题】:MSSQL: Can a C# function implement a view? 【发布时间】:2017-02-13 08:40:03 【问题描述】:对于使用 MS SQL 服务器的现有应用程序,是否可以实现将映射为 SQL 表的 C# 功能?
换句话说,能否从旧版 SQL 查询中查询 C# 功能,使其表现得就像 SQL 表在那里一样?
动机:我有大量压缩数据的 blob(在其他地方存档为文件)。我想替换现有的庞大 SQL 表,以便在后台从存档中提取数据。
把 SQL 表想象成一个可以像普通表一样查询的缓存。当缓存未命中时,通过C#代码提取数据,填充缓存中缺失的数据,然后才执行真正的SQL查询。
该操作不是时间关键的。这样,即使是更简单的解决方案也是可以接受的——当 SQL 查询出现时,参数以某种方式传递给 C# 函数,该函数用提取的数据填充空表,然后执行 SQL 查询并返回数据。
在 MS SQL 服务器上是否有可能?
【问题讨论】:
也许你看起来像:***.com/questions/13420305/… 补充:只使用内置的FILESTREAM功能,无需自定义CLR实现。 我明白了。我唯一能想到的是一个由 sql 编程任务调用的 .net 程序(或者可能使用触发器?),它可以保持更新的视图以及您需要的所有转换.... 我建议然后使用 View 隐藏的表值函数。然后用法是 select * from myView;我认为,您的遗留软件要求将得到满足。我对这个解决方案的性能有些怀疑,但你可以试试。 顺便说一句,前段时间我问过类似的问题:***.com/questions/31625273/… 有些人认为,这种类型的问题并不常见 - 问题评级为 -1 :-) 【参考方案1】:您可以使用partial class
实现这一目标。
public partial class MyTable
public byte[] HeavilyCompressedData
get
//loading and returning large data
请记住,您不能在 LINQ 中为此属性 (The specified type member is not supported in LINQ to Entities
) 编写条件,但我认为您不想这样做。
【讨论】:
感谢您的帮助。但我知道从 SQL 调用 C# 代码的可能性。这就是我考虑在 C# 中实现的原因。问题是调用是否可以透明地连接到现有的 SQL 查询中。换句话说,如果SELECT * FROM xxx
可以在内部调用代码。也就是说,如果xxx
的内容可以从代码中获取,而不是从表格中获取。 (比如说,xxx
是一个视图。)以上是关于MSSQL:C# 函数可以实现视图吗?的主要内容,如果未能解决你的问题,请参考以下文章
为啥MYSQL很少人用视图,MYSQL的视图和MSSQL的视图有啥本质区别。
powershell 使用PowerShell导出MSSQL架构。此脚本将导出表,存储过程,触发器,函数和视图的模式定义