我有2个项目,其中一个是asp web api,另一个是类库,例如数据访问层,我还有两个实体框架上下文。 我在web api项目中使用了web api的ApiUser。
这是我在webApi项目中的ApiUser:
public class ApiUser : IdentityUser
{
public int? OrganizationId { get; set; }
public string Name { get; internal set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApiUser> manager, string authenticationType)
{
CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, authenticationType);
return userIdentity;
}
}
这是我在web api项目中的dbContext:
public class ApiDbContext : IdentityDbContext<ApiUser>
{
public ApiDbContext()
: base("PelicanConnection", throwIfV1Schema: false)
{
}
public static ApiDbContext Create()
{
return new ApiDbContext();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ApiUser>().ToTable("ApiUsers");
modelBuilder.Entity<IdentityRole>().ToTable("ApiRoles");
modelBuilder.Entity<IdentityUserRole>().ToTable("ApiUserRoles");
modelBuilder.Entity<IdentityUserClaim>().ToTable("ApiUserClaims");
modelBuilder.Entity<IdentityUserLogin>().ToTable("ApiUserLogins");
}
}
这是我在数据访问项目中的背景:
public class AppContext : DbContext
{
public AppContext() : base("AppConnection")
{
this.Configuration.LazyLoadingEnabled = false;
}
public DbSet<ApiUser> ApiUsers { get; set; }
public DbSet<Reception> Receptions { get; set; }
public DbSet<Box> Boxes { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Ignore<ApiUser>();
}
}
为了在两个项目中使用ApiUser,我不得不在数据访问项目上下文中忽略ApiUser。 如何在数据访问上下文中访问ApiUser DbSet?
答案 0 :(得分:0)
您可以在类对象前添加namespace
,以便编译器知道要使用哪一个,不需要忽略。您可以尝试将两个对象相互转换。
您应该查看Dependancy Injection
如何解决此问题,例如,您可以创建一个Interface
来描述ApiUser,IApiUser,并让两个不同的ApiUser类继承此接口。