Skip to content

UseNameConvert(FreeSql.Internal.NameConvertType.PascalCaseToUnderscoreWithLower)在Ado时失效 #2249

Description

@xh02

问题描述及重现代码:

在构建时使用UseNameConvert(FreeSql.Internal.NameConvertType.PascalCaseToUnderscoreWithLower),致使该规则的列至对象属性的映射和[Column(Name="xx_yy")]约定的映射规则在Ado执行sql语句时双双失效,不过,ISelect查询时的对象映射仍是正常的。

// c# code
IFreeSql fsq = new FreeSqlBuilder().UseConnectionString(DataType.Sqlite, @"Data Source=data.db")
		.UseNameConvert(FreeSql.Internal.NameConvertType.PascalCaseToUnderscoreWithLower)
		.Build();

class Resources
{
	[Column(Name = "id", IsPrimary = true, IsIdentity = true)]
	public int Id { get; set; }
	[Column(Name = "tid")]
	public int Tid { get; set; }
	//[Column(Name ="resource_type")]  //--case 1
	public string ResourceType { get; set; }
	[Column(Name = "resource_value")]  //--case2
	public string ResourceValue { get; set; }
	//[Column(Name = "resource_value")]  // valid case
	//public string Resource_Value { get; set; }
	[Column(Name = "created_at")]
	public DateTime CreatedAt { get; set; }
}

var res = fsq.Ado.Query<Resources>("select * from resources");
//以上只能接收到无下划线的列,如id,tid,当泛型类型是dynamic时,名称为数据库中的列名,值可以正常接收
CREATE TABLE resources (
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                tid INTEGER NOT NULL,
                resource_type TEXT NOT NULL,
                resource_value TEXT NOT NULL,
                created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            );

数据库版本

SQLite version 3.50.2

安装的Nuget包

<PackageReference Include="FreeSql.Extensions.Linq" Version="3.5.309" />
<PackageReference Include="FreeSql.Provider.Sqlite" Version="3.5.309" />

.net framework/. net core? 及具体版本

net10.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions