gpt4 book ai didi

entity-framework - 将列名称约定添加到 EF6 FluentAPI

转载 作者:行者123 更新时间:2023-12-02 09:14:06 24 4
gpt4 key购买 nike

这个问题是 4 年前在这里提出的:EF Mapping to prefix all column names within a table我希望这些天能有更好的处理。

我正在使用 EF6 Fluent API,我将其称为“无需迁移的代码优先”。我的模型有 POCO,并且大部分数据库列名称都定义为 [SingularTableName]Field (例如,CustomerAddress 数据库列映射到 Customers POCO 中的地址字段)

表:

CREATE TABLE dbo.Customers (
-- ID, timestamps, etc.
CustomerName NVARCHAR(50),
CustomerAddress NVARCHAR(50)
-- etc.
);

型号:

public class Customer
{
// id, timestamp, etc
public string Name {get;set;}
public string Address {get;set;}
}

模型构建器:

modelBuilder<Customer>()
.Property(x => x.Name).HasColumnName("CustomerName");
modelBuilder<Customer>()
.Property(x => x.Address).HasColumnName("CustomerAddress");

目标:

我真正想要的是能够对 FluentAPI 说这样的话:

modelBuilder<Customer>().ColumnPrefix("Customer");
// handle only unconventional field names here
// instead of having to map out column names for every column

最佳答案

model-based code-first conventions这变得非常简单。只需创建一个实现 IStoreModelConvention 的类...

class PrefixConvention : IStoreModelConvention<EdmProperty>
{
public void Apply(EdmProperty property, DbModel model)
{
property.Name = property.DeclaringType.Name + property.Name;
}
}

...并将其添加到 OnModelCreating 中的约定:

modelBuilder.Conventions.Add(new PrefixConvention());

关于entity-framework - 将列名称约定添加到 EF6 FluentAPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40674883/

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