C# 具有数据适配器的存储过程,引发SerializationException
我运行的代码基本上是一个存储过程,它将一个新行插入到表成员中。我已经发布了C中调用存储过程的方法代码,以及调用该方法的代码: 存储过程: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
[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+组件中使用。。我认为这是例外的主要问题