1

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よりも簡単なようです!

4

1 に答える 1