1

Мне нужно сохранить объект компании в базу данных как новый объект. Для этого мне нужно связать объект CompanyType с сущностью компании. Я не могу спасти Компанию, не делая этого. Подключить ли вновь созданную компанию к контексту, а затем привязать компанию типа компании к компании и сохранить мои результаты? Этот код работает ... но просто не чувствует себя хорошо.Как сохранить объект в первый раз, когда требуется присоединение к нему еще одного существующего объекта

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; 
    } 

КомпанияType была прикреплена к другому контексту и отсоединена, поэтому его передают здесь. Будет ли я лучше передавать в PropertyTypeID и запрашивать связанный объект внутри одного и того же оператора using?

Я не могу вынести, что мне нужно сделать так много шагов, чтобы получить EF goign, где LINQ to SQL было так просто! Тем не менее - EF кажется проще, чем NHibernate!

ответ

1

Я делаю это так:

Company company = new Company(); 
company.CreateDate = DateTime.Now; 
company.UpdateDate = DateTime.Now; 
company.CompanyType = companyType; 
RanchBuddyEntities.AddToCompanies(company); 
RanchBuddyEntities.SaveChanges();