0

我正在運行此代碼,其中基本上我有一個存儲過程,將新行插入表member。我已經發布了該方法的代碼從C#調用存儲過程,並在那裏我打電話是方法的代碼:存儲過程與數據適配器,拋出SerializationException

存儲過程:

[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.SerializationExcepti上:無法找到 集「數據層,版本= 1.0.0.0,文化=中立, 公鑰= 536d0c71bd79a82e」

難道有人知道是什麼問題嗎?

+0

主要問題是:**爲什麼**你會編寫一個存儲過程在C#中插入數據行 - 這應該在T-SQL中 - 這就是T-SQL真正擅長的,以及T-SQL擅長於 –

+0

您是否已將程序集「Datalayer」添加到項目的引用中,並在使用節中定義它? – webber2k6

+0

@marc_s:用程序你可以檢查參數的約束和正確性,所以我認爲這是一個很好的方法。 – webber2k6

回答

0

您需要查看異常的InnerException以及異常的「Detail」。將代碼僅剝離到插入數據部分。我不知道ContextUtil的功能。將數據保存到sql server應該不需要序列化。我認爲這是做序列化的功能中的其他東西。

+0

我在一個COM +組件中使用..我認爲這是異常的主要問題 – Xupla

0

它在我看來像配置問題。 你的代碼沒有多大幫助。

我猜DataLayer是你的類在你的DataLayer.dll中的某個地方。 這段代碼在哪裏被調用?在Web服務上?你在哪裏得到你的例外?客戶端應用程序?

如果是這樣,那麼你可能會得到完全不同的異常,這只是將它發送到客戶端應用程序的問題。