[英]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.