0

我首先使用实体​​框架 6 代码。我在跟踪导航属性和外键的情况时遇到了一些麻烦。让我用一个例子来详细说明。在此示例中,我正在创建一个对象并观察在创建 FK 引用的实体时导航属性发生的情况。

实体:

DomainUser {AccountStatus ... , UserAccount, UserAccountId}引用 UserAccount

用户帐户 { 用户帐户 ID ... }

第一种情况 - 导航属性在创建时为空:

var newAccount = userAccountService.CreateAccount(userName, password, email);

var domainUser = new DomainUser
{
    AccountStatus = active,
    UserAccountId = newAccount.ID
};

domainUserRepository.Add(domainUser); // save changes is called on the context in this method.

return domainUser; // at this point, the UserAccount property of domainUser is null

第二种情况 - 抛出 InvalidOperationExceptionException

var newAccount = userAccountService.CreateAccount(userName, password, email);

var domainUser = new DomainUser
{
    AccountStatus = active,
    UserAccount = newAccount
};

domainUserRepository.Add(domainUser); // "An entity object cannot be referenced by multiple instances of IEntityChangeTracker."

return domainUser; 

所以我的问题是,如何使用导航属性 UserAccount?

我是否必须使用 UserAccountId 从数据库中获取它?

如果是这样,我该如何将它附加到 DomainUser 对象?

我觉得这应该是直观的。但它不是。

4

0 回答 0