如何处理Optional Parameters和Linq To SQL [英] How do deal with Optional Parameters and Linq To SQL

查看:60
本文介绍了如何处理Optional Parameters和Linq To SQL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的问题:第一次真正使用Linq to SQL,我一直坚持如何处理我的存储过程中的可选参数。



我有一个插入存储过程,其中包含一些可选的参数,因为如果没有它,用户将不必提供该信息。下面是这样的:

Here is my issue: First time really using Linq to SQL and I'm stuck on what to do with optional parameters in my stored procedures.

I have an insert stored procedure that has some of it's parameters that can be optional since the user will not have to supply that information if they don't have it. Here is what that looks like:

@CompanyName varchar(MAX),
	@ParentCompany varchar(MAX) = Null,
	@Description varchar(MAX),
	@EightACert bit,
	@SDBCert bit,
	@Minority bit,
	@Hubzone bit,
	@WBE bit,
	@DVBE bit,
	@MinoritySupplier bit,
	@Verified bit,
	/*Contact Table*/
	@WebSite varchar(100) = Null,
	@Email varchar(200) = Null,
	@Phone varchar(20),
	@Fax varchar(20) = Null,
	@KeyContact varchar(Max),
	@KeyContactTitle varchar(Max),
	@FedEmployerID varchar(10) = Null,
	@SSN varchar(4) = Null,
	/*AddressTable*/
	@PrimaryAddressLine1 varchar(max),
	@PrimaryAddressLine2 varchar(max) = Null,
	@PrimaryAddressCity varchar(100),
	@PrimaryAddressZip varchar(5),
	@HomeOffice bit,
	@PrimaryStateID varchar(2),
	@MailingAddressLine1 varchar(max) = Null,
	@MailingAddressLine2 varchar(max) = Null,
	@MailingAddressCity varchar(100) = Null,
	@MailingAddressStateID varchar(2) = Null,
	@MailingAddressZip varchar(5) = null,	
	/*Geographical Market*/
	@GeoMarket int





现在,当我在我的代码中使用此存储过程时,如果这些可选字段中没有文本,我不知道如何发送dbnull.value。例如,在我使用以下内容之前:



Now, when I go to use this stored proc in my code, I don't know how to send a dbnull.value if those optional fields do not have text in them. For example, before I would use something like the following:

if (txtParentCompany.Text.Trim().Length == 0)
{
   command.Parameters.AddWithValue("@ParentCompany", DBNull.Value);
}
else
{
   command.Parameters.AddWithValue("@ParentCompany", txtParentCompany.Text.Trim());
}





如何使用Linq to SQL做到这一点?现在我的代码看起来像这样:



How do I do that with Linq to SQL? Right now my code looks like this:

var vendorID = (int)db.InsertVendor(
                            txtCompanyName.Text.Trim(),
                            txtParentCompany.Text.Trim(),
                            txtDescript.Text.Trim(),
                            chblCerts.Items[0].Selected,
                            chblCerts.Items[3].Selected,
                            chblCerts.Items[1].Selected,
                            chblCerts.Items[2].Selected,
                            chblCerts.Items[4].Selected,
                            chblCerts.Items[5].Selected,
                            chblCerts.Items[6].Selected,
                            false,
                            txtWebsite.Text.Trim(),
                            txtEmail.Text.Trim(),
                            txtPhone.Text.Trim(),
                            txtFax.Text.Trim(),
                            txtKeyContact.Text.Trim(),
                            txtKeyContactTitle.Text.Trim(),
                            txtFedNumber.Text.Trim(),
                            txtSSN.Text.Trim(),
                            txtPrimaryAddressLine1.Text.Trim(),
                            txtPrimaryAddressLine2.Text.Trim(),
                            txtPrimaryAddressCity.Text.Trim(),
                            txtPrimaryAddressZip.Text.Trim(),
                            chbHomeOffice.Checked ,
                            dropPrimaryAddressState.SelectedValue,
                            txtMailingAddressLine1.Text.Trim(),
                            txtMailingAddressLine2.Text.Trim(),
                            txtMailingAddressCity.Text.Trim(),
                            mailingAddressStateID,
                            txtMailingAddressZip.Text.Trim(),
                            Convert.ToInt32(dropGeoMarket.SelectedValue)
                        ).ReturnValue;

推荐答案

这篇关于如何处理Optional Parameters和Linq To SQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆