1

我需要将公司实体作为新实体保存到数据库中。为此,我需要将 CompanyType 实体与 Company 实体相关联。如果不这样做,我就无法拯救公司。我是否将新创建的公司附加到上下文,然后将公司类型实体附加到公司,然后保存我的结果?这段代码有效......但感觉不对。

public RepositoryStatus SaveCompany(Company company, CompanyType companyType)
    {
        RepositoryStatus rs = new RepositoryStatus();
        try
        {
            using (RanchBuddyEntities dc = new Connection().GetContext())
            {
                if (company.CompanyID > 0)
                {
                    company.UpdateDate = DateTime.Now;
                    Company original = dc.CompanySet.Where(c => c.CompanyID == company.CompanyID).FirstOrDefault();
                    dc.ApplyPropertyChanges("CompanySet", company);
                    dc.Attach(companyType);
                    company.CompanyTypesReference.Attach(companyType);
                }
                else
                {
                    company.CreateDate = DateTime.Now;
                    company.UpdateDate = DateTime.Now;
                    dc.AddToCompanySet(company);
                    dc.Attach(companyType);
                    company.CompanyTypesReference.Value = companyType;
                }
                dc.SaveChanges();
            }
            rs.SetObject(company);
            rs.StatusType = Status.StatusTypes.Success;
        }
        catch (Exception e)
        {
            rs.SetObject(company);
            rs.StatusType = Status.StatusTypes.Failure;
            rs.AddMessage(e.Message + Environment.NewLine + e.StackTrace);
        }

        return rs;
    }

CompanyType 附加到另一个上下文并分离,这就是它在此处传递的原因。传递 CompanyTypeID 并在同一 using 语句中查询关联对象会更好吗?

我无法忍受我必须采取这么多步骤才能让 EF goign LINQ to SQL 如此简单!仍然 - EF 似乎比 NHibernate 更容易!

4

1 回答 1

1

我这样做:

Company company = new Company();
company.CreateDate = DateTime.Now;
company.UpdateDate = DateTime.Now;
company.CompanyType = companyType;
RanchBuddyEntities.AddToCompanies(company);
RanchBuddyEntities.SaveChanges();
于 2009-03-28T15:22:20.443 回答