Sql server 用于繁重操作的SQL CLR对象

Sql server 用于繁重操作的SQL CLR对象,sql-server,linq,linq-to-sql,sql-server-2008,clr,Sql Server,Linq,Linq To Sql,Sql Server 2008,Clr,以下是我的设想: 我已经在我的C#框架中实现了set逻辑。集合可以包含大量的对象,在更糟糕的情况下,甚至可以包含100万个对象。假设集合只包含名为Doc的对象列表。由于潜在的大量对象,我想让开发人员选择如何创建和使用集合 对于较小的集合,开发人员只需创建一个新集合并向集合中添加文档对象。正常的集合逻辑可用,如并集、交集等。然后,开发人员可以在任意点使用my或layer持久化集合,集合将在其中分配一个主ID 对于保存在数据库中的非常大的集合,我希望通过允许在SQL 2008 CLR中操纵集合,避免

以下是我的设想:

我已经在我的C#框架中实现了set逻辑。集合可以包含大量的对象,在更糟糕的情况下,甚至可以包含100万个对象。假设集合只包含名为Doc的对象列表。由于潜在的大量对象,我想让开发人员选择如何创建和使用集合

对于较小的集合,开发人员只需创建一个新集合并向集合中添加文档对象。正常的集合逻辑可用,如并集、交集等。然后,开发人员可以在任意点使用my或layer持久化集合,集合将在其中分配一个主ID

对于保存在数据库中的非常大的集合,我希望通过允许在SQL 2008 CLR中操纵集合,避免从数据库中提取doc对象的ID,然后将ID保存回set对象的过程。我想要一个简单的功能,比如这个签名:

public void AddSetMembers(int setID, Expression<Func<Doc, bool>> Where)
public void AddSetMembers(int setID,表达式Where)
这将允许开发人员向与表达式匹配的集合中添加任意文档,而无需从数据库中提取所有ID,只需将它们添加到集合中

我的问题是如何最好地在存储过程中实现这个实现?我可以通过某种方式将lambda传递给存储过程吗?我曾考虑过实现一个IDoc接口,并将其加载到CLR中,并具有如下签名:

public void AddSetMembers(int setID, Expression<Func<IDoc, bool>> Where)
public void AddSetMembers(int setID,表达式Where)

但是,我仍然需要将lambda传递给SP。我希望使框架足够灵活,以便开发人员可以使用不同的条件来创建集合。

您可以将字符串从SQL传递给包含lambda的SQL CLR方法。然后使用框架的编译工具将该字符串编译成函数/方法,然后调用它。

您可以将一个字符串从SQL传递到包含lambda的SQL CLR方法。然后使用框架的编译工具将该字符串编译成函数/方法,然后调用它。

是的,我正在充分利用SQL2008 CLR。集合本身是一个持久化对象,它自己的表由集合对象的ID组成。我曾想过使用一个字符串来传递lambda,然后用一个方法公开存储过程,从而使字符串成为正确类型的lambda。集合本身是一个持久化对象,它自己的表由集合对象的ID组成。我曾考虑过使用一个字符串来传递lambda,然后用一个方法公开存储过程,从而使字符串成为正确类型的lambda。