簡體   English   中英

C#使用Dapper和SQL Server標量變量

[英]C# using Dapper and sql server scalar variable

我遇到一個在聲明標量變量時很熟悉的問題。 我嘗試了很多技巧,卻沒有在這個論壇中進行搜索。

問題

我在應用程序中使用Dapper,並且在連接到SQL Server之后,我正在調用存儲過程以將公司插入到Company表中。

手動執行存儲過程時,該存儲過程在SSMS中可以正常工作,但是在應用程序中,它總是給我錯誤,您必須在@comp_Addre聲明標量變量。 除此變量外,所有其他變量都可以正常工作,我真的不明白為什么。

public void insertComp(string compID, string compName,  string comp_Addressing, string teleComp, string faxComp, string foundDate, string ownername, string license_ID, string taxingID, string licenseExpiring, string cb_country)
{
    using (IDbConnection Connecting = new System.Data.SqlClient.SqlConnection(connectHelper.CnnVal("hrDB")))
    {
        List<companyModel> companies = new List<companyModel>();
        companies.Add(new companyModel { companyID = compID, companyName = compName,  company_Address=comp_Addressing,telephoneNumber = teleComp, faxNumber = faxComp, foundationDate = foundDate, ownerName = ownername, licenseID = license_ID, taxID = taxingID, licenseExpire = licenseExpiring, country=cb_country });
        Connecting.Execute("dbo.InsertComp @CompanyID, @CompanyName,  @comp_Addre, @TelephoneNumber, @FaxNumber, @FoundationDate, @OwnerName, @LicenseID, @TaxID, @LicenseExpire, @Country", companies);
    }
}

我的機器上目前沒有可正常使用的Dapper&C#解決方案,但是通過更好地格式化代碼,您可以在代碼中看到錯誤/錯誤。

下面的代碼應該可以工作,因為在存儲過程的參數化調用中,我已將comp_Addre更改為company_Address

當然,你也可以保持comp_Addre在存儲過程和的屬性更改companyModelcompany_Address

public void insertComp(string compID, string compName,  string comp_Addressing, string teleComp, string faxComp, string foundDate, string ownername, string license_ID, string taxingID, string licenseExpiring, string cb_country)
{
    using (IDbConnection Connecting = new System.Data.SqlClient.SqlConnection(connectHelper.CnnVal("hrDB")))
    {
        List<companyModel> companies = new List<companyModel>();
        companies.Add(
            new companyModel { 
                companyID = compID, 
                companyName = compName,  
                company_Address = comp_Addressing,
                telephoneNumber = teleComp, 
                faxNumber = faxComp, 
                foundationDate = foundDate, 
                ownerName = ownername, 
                licenseID = license_ID, 
                taxID = taxingID, 
                licenseExpire = licenseExpiring, 
                country = cb_country });

        Connecting.Execute("dbo.InsertComp 
            @CompanyID, 
            @CompanyName,  
            @company_Address, 
            @TelephoneNumber, 
            @FaxNumber, 
            @FoundationDate, 
            @OwnerName, 
            @LicenseID, 
            @TaxID, 
            @LicenseExpire, 
            @Country", companies);
    }
}

除了在兩個模型上都對屬性進行命名之外,我建議您檢查一下C#語言的命名約定。 閱讀(並強制執行)它們將使您的代碼在多個人員/團隊中更容易理解,並且不會出現錯字/錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM