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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions