I持って、次の3つの事業体:モデル化と3つのテーブル間の多対多の関係コードまず
- ユーザー
- アカウント
- 役割
との関係は次のようになります
- 1人のユーザーが多数のアカウントを持つことができます
- 1つのアカウントには、多くのユーザー
- 各ユーザーは、アカウント内の役割を持っているに属することができ
- 私はここまでだ
(列挙型ロールで定義された)いくつか、事前に定義された役割があります。
public class User
{
public int Id { get; set; }
public ICollection<Account> Accounts { get; set; }
}
public class Account
{
public int Id { get; set; }
public ICollection<User> Users { get; set; }
}
public class Role
{
public int Id { get; set; }
public string RoleName { get; set; }
public virtual ICollection<User> Users { get; set; }
public virtual ICollection<Account> Accounts { get; set; }
}
たびに、ユーザー登録、彼らはまた、アカウントを作成するので、私はこの考え:
public async Task AddAccountAsync(User user, string accountName)
{
Account account = new Account(user, accountName);
Role role = new Role(Roles.Owner);
Accounts.Add(account);
user.Accounts.Add(account);
Entry(user).State = EntityState.Modified;
await SaveChangesAsync();
}
しかし、私はその役割をユーザーにアカウントに結び付けているかどうかはわかりません。そのため、ユーザーがアカウントに持つ役割を得ることができます。
- Account1 =(ユーザー1、所有者)、(ユーザ2、TeamMember)
- Account2 =(ユーザー2、所有者)
- :
3つのユーザーと3つのアカウントを考慮してください。例えば
Account3 =(User3、Owner)、(User1、ReadOnlyMember)
@ IvanStoevの回答に続いて、私はこれを得ました:
public async Task AddAccountAsync(User user, string accountName)
{
Role role = new Role(Roles.Owner);
Account account = new Account(model.AccountCurrency, model.AccountName, model.Description);
UserAccount uc = new UserAccount
{
User = user,
Account = account,
Role = role
};
account.UserAccounts.Add(uc);
Accounts.Add(account);
user.UserAccounts.Add(uc);
Entry(user).State = EntityState.Modified;
await SaveChangesAsync();
}
UserAccountオブジェクトを保存する必要がありますか(DbContext<UserAccount>
)?
'User'は' Role'なしで 'Account'を持つことができますか?あなたが望むものの例を提供すれば、より詳細な情報を提供するべきです。 –
@TaherRahgooyいいえ、ユーザーはアカウントで役割が必要です。私は例を追加します –