身份框架2不对新的自定义实体进行更改



我是身份框架的新手,也许我在这里做的不是最好的方法,但是无论哪种方式,以下是我的情况:

在"角色"因素之外,我应用程序上的某些领域也应考虑给定的"公司"是否附加了给定的用户。

我创建了一个新的实体"公司"(非常简单,仅带有ID和名称)和一个关系实体" UserCompany"(使用用户和公司的ID)。我试图使其与身份框架上的角色和用户之间使用的结构尽可能相似。

在我的ApplicationDbContext中,我添加了DBSET和一些逻辑,例如,向用户添加了公司列表。

我面临的问题是" Savechanges"不会将更改应用于数据库。*编辑:没有错误,savechanges()的结果为" 1"。

这是我的applicationdbcontext

的示例代码
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public DbSet<Company> Companies { get; set; }
    public DbSet<UserCompany> UserCompanies { get; set; }
    //constructors, etc...
    public void AddToCompanies(string _userId, params string[] _companyIds)
    {
        foreach (var companyId in _companyIds)
        {
            UserCompanies.Add(new UserCompany()
            {
                UserId = _userId,
                DataAreaId = companyId
            });
        }
        int result = this.SaveChanges();
    }
}

这是我映射这个" USERCOMPANY"实体的方式

 public class UserCompany
{
    [Key, Column(Order = 1), ForeignKey("ApplicationUser")]
    public string UserId { get; set; }
    public virtual ApplicationUser ApplicationUser { get; set; }
    [Key, Column(Order = 2), ForeignKey("Company")]
    public string DataAreaId { get; set; }
    public virtual Company Company { get; set; }
}

在我的UseradMincontroller类上,我创建了一个私有应用程序DBContext对象,该对象负责调用此逻辑。我怀疑我要处理两个不同的上下文以保存此数据存在一些问题(在ApplicationUserManager对象和此新数据中一个),但是我不确定这是否真的是问题,或者我是否是否存在问题在这里缺少其他东西。

任何帮助将不胜感激!

UserCompany模型应该像这样

public class UserCompany
{
   [Key, Column(Order = 1)]
   public string UserId { get; set; }
   [ForeignKey("UserId ")]
   public virtual ApplicationUser ApplicationUser { get; set; }
   [Key, Column(Order = 2)]
   public string DataAreaId { get; set; }
   [ForeignKey("DataAreaId")]
   public virtual Company Company { get; set; }
}

并检查是否使用TransactionScope并不提交。希望它有帮助!

相关内容

  • 没有找到相关文章

最新更新