我经常有一组表值函数返回具有相同结构的数据集(相同的列名,类型和顺序)。
如果我只是将函数拖到Linq2Sql设计器中,设计器将为每个函数创建一个新的匿名结果类型,并且这些函数在结果上不兼容。
告诉设计人员函数具有相同的结果类型,我需要将函数拖到现有的Linq2Sql类中。
没关系,但我每次都必须手动创建类(在设计器区域中插入一个新表,按 Insert 多次插入列,键入列名,客户端数据类型和服务器端数据类型)。如果有许多列和许多函数,这可能非常耗时。
有没有办法告诉设计师通过查看表值函数来自动创建实体(表类),这样我就可以将其余的函数拖到该实体上?
我目前的解决方法是:
在服务器上创建一个视图:
create view dbo.stupid_linq as select * from dbo.FunctionIWant(bogus_params);
将该视图拖动到设计器,后者将创建一个实体。
通过删除Source
来取消实体与数据库的链接。
重命名实体。
删除服务器上的视图。
将表值函数拖到实体上。