相同的更新和保存功能?

时间:2015-06-09 14:03:55

标签: c# asp.net-mvc web-services

我使用该功能进行更新的代码在这里,它也适用

[HttpPost]

public bool SaveDefCompny(DefCompanyDTO DefCmpny)
{

    using (RPDBEntities db = new RPDBEntities())
    {
        using (TransactionScope trans = new TransactionScope())
        {
            //the problem is here incase of saving 

                var UpdateDefCmpnyId = (from CmpnyId in db.DefCompanies
                                        where CmpnyId.Id == DefCmpny.Id
                                        select CmpnyId).First();

                List<DefCompany> list = new List<DefCompany>();
                list.Add(UpdateDefCmpnyId);
                try
                {
                    foreach (DefCompany DefCmpny1 in list)
                    {
                        DefCmpny1.Id = DefCmpny1.Id;

                        DefCmpny1.ShortName = DefCmpny.ShortName;
                        DefCmpny1.FullName = DefCmpny.FullName;
                        DefCmpny1.ContactPerson = DefCmpny.ContactPerson;
                        DefCmpny1.Address1 = DefCmpny.Address1;


                        DefCmpny1.CompanyCity = DefCmpny.CompanyCity;
                        DefCmpny1.CompanyState = DefCmpny.CompanyState;
                        DefCmpny1.CompanyCountry = DefCmpny.CompanyCountry;
                        DefCmpny1.ZipPostCode = DefCmpny.ZipPostCode;
                        DefCmpny1.TelArea = DefCmpny.TelArea;
                        DefCmpny1.CurrentCurrencyCode = DefCmpny.CurrentCurrencyCode;


                        db.SaveChanges();
                        trans.Complete();
                    }
                }
                catch (Exception ex)
                {


                }

            }
            return false;
        }

}

当我尝试保存而不是更新代码行时

var UpdateDefCmpnyId = (from CmpnyId in db.DefCompanies
                                            where CmpnyId.Id == DefCmpny.Id
                                            select CmpnyId).First();

给出空值,因此保存失败,因为记录是新的并且不存在于数据库中,因此如果在保存如何使用try catch的情况下如何处理null,以便当值为null时继续保存添加的代码

1 个答案:

答案 0 :(得分:1)

这些方面的内容如何:

var UpdateDefCmpnyId = (from CmpnyId in db.DefCompanies
                                    where CmpnyId.Id == DefCmpny.Id
                                    select CmpnyId).FirstOrDefault();
if(UpdateDefCmpnyId == null)
{
    //insert
    //(handle the id however you need to for insert. depending on your setup, you might be able to leave it empty and let the database put it in for you)
}
else
{
    //update
    //set the id as you do in the question
}