【问题标题】:Change the Table's Alias name runtime in ServiceStack.OrmLite在 ServiceStack.OrmLite 中更改表的别名运行时
【发布时间】:2017-08-02 08:53:41
【问题描述】:

我有一个包含 IdentityDbContext 的应用程序,我想使用 ServiceStack.OrmLite 选择数据,我想知道如何更改别名

public class ApplicationDbContext : IdentityDbContext<User>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);

        builder.Entity<User>().ToTable("User");
        builder.Entity<IdentityRole>().ToTable("Role");
        builder.Entity<IdentityUserRole<string>>().ToTable("UserRole");
        builder.Entity<IdentityUserClaim<string>>().ToTable("UserClaim");
        builder.Entity<IdentityUserLogin<string>>().ToTable("UserLogin");
    }
}

我尝试了下面的代码,但它不起作用:

ModelDefinition<User>.Definition.Alias = "Users";
ModelDefinition<IdentityRole>.Definition.Alias = "Roles";
ModelDefinition<IdentityUserRole<string>>.Definition.Alias = "UserRoles";
ModelDefinition<IdentityUserClaim<string>>.Definition.Alias = "UserClaims";
ModelDefinition<IdentityUserLogin<string>>.Definition.Alias = "UserLogins";

【问题讨论】:

    标签: c# servicestack ormlite-servicestack


    【解决方案1】:

    您可以使用 GetModelMetadata() 扩展方法更改 OrmLite 用于每种类型的表元数据,例如:

    var tableMeta = type.GetModelMetadata();
    tableMeta.Alias = "NewTableName";
    

    【讨论】:

    • 你好@mythz。在这里,当我尝试从 EntityFramework IdentityUser 读取相同的模型时遇到问题,我们将看到如下错误:PostgresException: 42703: column "Roles" does not exist 因为Roles 属性的类型是ICollection&lt;TUserRole&gt;。你有什么解决办法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多