Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 第一次需要附加另一个预先存在的实体时,如何保存该实体_C#_.net_Model View Controller_Entity Framework_Repository Pattern - Fatal编程技术网

C# 第一次需要附加另一个预先存在的实体时,如何保存该实体

C# 第一次需要附加另一个预先存在的实体时,如何保存该实体,c#,.net,model-view-controller,entity-framework,repository-pattern,C#,.net,Model View Controller,Entity Framework,Repository Pattern,我需要将公司实体作为新实体保存到数据库中。为了做到这一点,我需要将CompanyType实体与Company实体相关联。不这样做我就救不了公司。我是否将新创建的公司附加到上下文,然后将公司类型实体附加到公司,然后保存结果?这个代码可以工作…但感觉不太对劲 public RepositoryStatus SaveCompany(Company company, CompanyType companyType) { RepositoryStatus rs = new Repo

我需要将公司实体作为新实体保存到数据库中。为了做到这一点,我需要将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被附加到另一个上下文并被分离,这就是它被传递到这里的原因。在同一using语句中传入CompanyTypeID并查询关联对象是否更好

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

我是这样做的:

Company company = new Company();
company.CreateDate = DateTime.Now;
company.UpdateDate = DateTime.Now;
company.CompanyType = companyType;
RanchBuddyEntities.AddToCompanies(company);
RanchBuddyEntities.SaveChanges();
我是这样做的:

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