Companyエンティティを新しいエンティティとしてデータベースに保存する必要があります。これを行うには、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ステートメント内の関連オブジェクトを照会する方がよいでしょうか。
LINQ to SQLが非常に簡単だった場所でEFを実行するには、多くの手順を踏まなければならないことに我慢できません。それでも-EFはNHibernateよりも簡単なようです!