gpt4 book ai didi

entity-framework - 如何全局优先在 Entity Framework 代码中添加表前缀?

转载 作者:行者123 更新时间:2023-12-03 12:01:36 29 4
gpt4 key购买 nike

我想用'pe_'这样的前缀添加数据库中的所有表,那么类和表之间的映射将是这样的:Category(pe_Category)、Product(pe_Product)等。

我知道使用一张 map ,我可以这样做:

[Table("pe_Category")]
public class Category
{
public int CategoryId { get; set; }
}

但我不喜欢它,因为可能有数百个实体。

所以我正在寻找一种方法来全局添加前缀,就像这样:
public class Category
{
public int CategoryId { get; set; }
}

public class Product
{
public int ProductId { get; set; }
}

// Global config, will affect all entities
table.Name = "pe_" + Class.TypeName ;

任何人都可以帮助我吗?

最佳答案

现在我找到了 Entity Framework 6 alpha 的解决方案:

1)创建一个名为“DefaultTableConvention”的类:

public class DefaultTableConvention
: IConfigurationConvention<Type, EntityTypeConfiguration>
{
public void Apply(
Type type,
Func<EntityTypeConfiguration> configuration)
{
configuration().ToTable("PE_" + type.Name);
}
}

2) 在 DbContext 中,添加以下代码:
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Add<DefaultTableConvention>();
}

仅此而已,它将影响添加到 DbContext 中的所有实体。详情: http://entityframework.codeplex.com/wikipage?title=Custom%20Conventions

更新:
现在有了 EF6,有一种更简单的方法,称为“轻量级配置”,代码如下:
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Types().Configure(entity => entity.ToTable("PE" + entity.ClrType.Name));
}

关于entity-framework - 如何全局优先在 Entity Framework 代码中添加表前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12633015/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com