Мне нужно сохранить объект компании в базу данных как новый объект. Для этого мне нужно связать объект 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!