Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择数据并将其传递到CLR函数/存储过程?_C#_Sql_Clr - Fatal编程技术网

C# 选择数据并将其传递到CLR函数/存储过程?

C# 选择数据并将其传递到CLR函数/存储过程?,c#,sql,clr,C#,Sql,Clr,我可以找到很多这样的例子,人们将单个参数传递到CLR代码中: public static void Example(SqlDateTime param1, SqlInt32 param2) { } 我还看到过很多代码,其中人们传入参数,然后使用这些参数在代码中从SQL中选择数据(使用SQLCommand)。难道不可能将与DataTable对象等效的对象传入CLR代码并对其进行操作吗 谢谢 Joe根据对象的类型(托管/本机),您始终可以在CLI中传递等效对象 public class Nativ

我可以找到很多这样的例子,人们将单个参数传递到CLR代码中:

public static void Example(SqlDateTime param1, SqlInt32 param2) {
}
我还看到过很多代码,其中人们传入参数,然后使用这些参数在代码中从SQL中选择数据(使用SQLCommand)。难道不可能将与DataTable对象等效的对象传入CLR代码并对其进行操作吗

谢谢


Joe

根据对象的类型(托管/本机),您始终可以在CLI中传递等效对象

public class NativeObject
{
private:
    int id;
    string msg;
    SomeClass obj;
    .......
public:
    string getMessage(){return msg;}
    int getID(){return id;}
    ...
}
它的管理等价物将是

public ref class ManagedObject
{
private:
    NativeObject* native;
public:
    ManagedObject(NativeObject* obj){
        native = obj;
    }
    String^ getMessage(){
        convertNativeToCLI(native->getMessage()); //you can use marshaling to implement convertNativeToCLI method. 
    }
    int getID(){
        return native->getID();
    }
    ...
}
您需要一个活页夹或接口类来将一个对象从一种形式转换为另一种形式。通常,当我们有复杂的对象时,我们使用这种方法。如果我们只有很少的简单数据对象,那么这种方法将不必要地增加额外的开销