gpt4 book ai didi

asp.net-mvc - 如何在 Entity Framework 中保存导航属性

转载 作者:行者123 更新时间:2023-12-02 00:46:07 27 4
gpt4 key购买 nike

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

谢谢!

--- 示例代码 ---

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 对象设置为您尝试引用的帐户实例。您可以并且可能应该将此代码提取到帐户的单独存储库中,只需确保它们共享相同的实体上下文即可。

关于asp.net-mvc - 如何在 Entity Framework 中保存导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/490769/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com