Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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# 具有数据适配器的存储过程,引发SerializationException_C#_Serialization_Stored Procedures_Data Access Layer_Dataadapter - Fatal编程技术网

C# 具有数据适配器的存储过程,引发SerializationException

C# 具有数据适配器的存储过程,引发SerializationException,c#,serialization,stored-procedures,data-access-layer,dataadapter,C#,Serialization,Stored Procedures,Data Access Layer,Dataadapter,我运行的代码基本上是一个存储过程,它将一个新行插入到表成员中。我已经发布了C中调用存储过程的方法代码,以及调用该方法的代码: 存储过程: [AutoComplete(true)] public void AddNewMember(Member cm) { SqlCommand cmd = new SqlCommand(); SqlDataAdapter da = new SqlDataAdapter(); try { this.Connection.Beg

我运行的代码基本上是一个存储过程,它将一个新行插入到表成员中。我已经发布了C中调用存储过程的方法代码,以及调用该方法的代码:

存储过程:

[AutoComplete(true)]
public void AddNewMember(Member cm)
{
   SqlCommand cmd = new SqlCommand();
   SqlDataAdapter da = new SqlDataAdapter();

   try
   {
       this.Connection.BeginTransaction();

       this.InitializeConnection();

       cmd = new SqlCommand("sp_addNewMember", this.Connection);
       cmd.Parameters.Add(new SqlParameter("@memberID", cm.MemberID));
       cmd.Parameters.Add(new SqlParameter("@userID", cm.UserID));
       cmd.Parameters.Add(new SqlParameter("@dateJoined", cm.DateJoined));
       cmd.Parameters.Add(new SqlParameter("@Duties", cm.Duties));

       cmd.CommandType = CommandType.StoredProcedure;

       da.InsertCommand = cmd;

       ContextUtil.SetComplete();
    }
    catch (Exception ex)
    {
        ContextUtil.SetAbort();
    }
调用该方法:

DataLayer.Member cm = new DataLayer.Member();
cm.MemberID = Guid.NewGuid();
cm.UserID = new Guid(txtUserID.Text);
cm.DateJoined = Convert.ToDateTime(txtDateJoined.Text);
cm.Duties = txtDuties.Text;

DataLayer.AddMember acm = new DataLayer.AddMember();
acm.AddNewMember(cm); 
在acm.AddNewMember行上引发的异常:

System.Runtime.Serialization.SerializationException:找不到 程序集的数据层,版本=1.0.0.0,区域性=中性, PublicKeyToken=536d0c71bd79a82e'


有人知道问题出在哪里吗?

您需要查看异常的内部异常以及异常的详细信息。只将代码剥离到插入数据部分。我不知道背景是什么。将数据保存到sql server不需要序列化。我认为是函数中的其他东西在做序列化

在我看来,这像是配置问题。 你的代码帮不了什么忙

我猜DataLayer是DataLayer.dll中的某个类。 在哪里调用此代码?关于Web服务?你从哪里得到你的例外?在客户端应用程序上


如果是这样,您可能会遇到完全不同的异常,这只是将其发送到客户端应用程序的问题。

主要问题是:为什么要编写存储过程以在C中插入数据行-这应该是在T-SQL中-这是T-SQL真正擅长的,T-SQL的优点是什么?您是否已将程序集数据层添加到项目的引用中,并在“使用”部分中定义了它?@marc_s:通过一个过程,您可以检查约束和参数的正确性,因此我认为这是一个很好的方法。@webber2k6:T-SQL存储过程还可以检查参数,约束等-这里没有区别,对SQL-CLR方法也没有好处…是的,我已将引用添加到项目中。我正在COM+组件中使用。。我认为这是例外的主要问题