【发布时间】:2016-07-24 15:47:40
【问题描述】:
我有以下 3 个实体:
- 用户
- 帐户
- 角色
关系是这样的
- 一个用户可以有多个帐户
- 一个帐户可以属于多个用户
- 每个用户在一个帐户中都有一个角色
- 有一些预定义角色(在枚举角色中定义)
我已经走到这一步了:
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();
}
但我不确定如何将角色与用户绑定到帐户,因此我可以获取用户在帐户中的角色。
例如:
考虑 3 个用户和 3 个帐户:
- Account1 = (User1, Owner), (User2, TeamMember)
- Account2 = (User2, Owner)
- 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 不,用户需要帐户中的角色。我将添加一个示例
标签: c# entity-framework