繁体   English   中英

如何在实体框架中保存导航属性

[英]How To Save Navigation Properties in the Entity Framework

我正在尝试使用存储库模式来使用实体框架保存实体。 我不清楚如何保存导航属性(如下面的帐户)。 任何人都可以对此有所了解。 特别是如何将AccountId从MVC控制器一直设置到保存它的存储库。

谢谢!

---样本代码---

public void SavePerson(Person person)
    {           
        if (person != null)
        {
            using (xxxxxxEntities bbEntities = new xxxxxxEntities())
            {
                //see if it's in the db
                Person cPerson;

                ObjectQuery<Person> persons = bbEntities.Person;

                cPerson = (from p in persons
                         where p.PersonId == person.PersonId
                         select p).FirstOrDefault() ?? new Person();

                //synch it
                cPerson.Account.AccountId = person.Account.AccountId; //<=== ????
                cPerson.Active = person.Active;
                cPerson.BirthDay = person.BirthDay;
                cPerson.BirthMonth = person.BirthMonth;
                cPerson.BirthYear = person.BirthYear;
                cPerson.CellPhone = person.CellPhone;
                cPerson.CreatedBy = person.CreatedBy;
                cPerson.CScore = person.CScore;

Etc....

我想你可能会以艰难的方式解决这个问题。 存储库模式上有很多帖子,最适合MVC的方法是获取项目,然后使用表单更新它,然后保存它。 您正在做的是将项目传递到您的存储库,再次获取它,然后使用该对象更新它。

但那不是你问过的问题;

cPerson.Account = (from a in Account
                   where a.AccountId.Equals(person.Account.AccountId)
                   select a).FirstOrDefault();

您需要将Account对象设置为您尝试引用的帐户的实例,如下所示。 您可以并且可能应该将此代码提取到该帐户的单独存储库中,只需确保它们共享相同的实体上下文。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM