ServiceStack OrmLite CustomSelect 不工作?
ServiceStack OrmLite CustomSelect not working?
我正在尝试使用此处记录的功能:
https://github.com/ServiceStack/ServiceStack.OrmLite#custom-sql-customizations
我是这样使用它的:
var q = Db.From<MemberAccess>().LeftJoin<Member>();
return Db.Select<MemberResponse>(q);
响应对象:
public class MemberResponse
{
public Guid Id { get; set; }
public string MemberFirstName { get; set; }
public string MemberLastName { get; set; }
public string MemberEmail { get; set; }
[Default(OrmLiteVariables.SystemUtc)]
public string AccessedOn { get; set; }
[CustomSelect("CONCAT(LEFT(Member.FirstName, 1),LEFT(Member.LastName,1))")]
public string MemberInitial { get; set; }
}
似乎我在 CustomSelect 中输入的内容没有被使用。
也许,我没有正确使用它?
另外,默认属性也不起作用。
我试过了,因为它是 doco 的一个例子。
任何想法将不胜感激。
提前致谢。
[CustomSelect]
仅适用于来源 table。选择自定义类型的结果用于将返回的结果集映射到 MemberResponse
类型,它 对执行的查询 没有任何影响。
与 [Default(OrmLiteVariables.SystemUtc)]
类似,它用于在创建 table 时定义默认值,仅在 创建列定义 时使用,所以它是仅对来源 Table 类型有用。
这两个属性只应添加到源 MemberAccess
上才能生效,您映射的 MemberResponse
可以在没有任何属性的情况下访问,例如:
public class MemberResponse
{
public Guid Id { get; set; }
public string MemberFirstName { get; set; }
public string MemberLastName { get; set; }
public string MemberEmail { get; set; }
public string AccessedOn { get; set; }
public string MemberInitial { get; set; }
}
Sql.Custom() API
在 v4.5.5 中添加的新 Sql.Custom()
API available on MyGet 将允许您 select 自定义 SQL 片段,例如:
var q = Db.From<MemberAccess>().LeftJoin<Member>()
.Select<MemberAccess,Member>((a,m) => new {
Id = a.Id,
MemberFirstName = m.FirstName,
MemberLastName = m.LastName,
MemberEmail = m.Email,
MemberInitial = Sql.Custom("CONCAT(LEFT(Member.FirstName,1),LEFT(Member.LastName,1))")
});
return Db.Select<MemberResponse>(q);
我正在尝试使用此处记录的功能: https://github.com/ServiceStack/ServiceStack.OrmLite#custom-sql-customizations
我是这样使用它的:
var q = Db.From<MemberAccess>().LeftJoin<Member>();
return Db.Select<MemberResponse>(q);
响应对象:
public class MemberResponse
{
public Guid Id { get; set; }
public string MemberFirstName { get; set; }
public string MemberLastName { get; set; }
public string MemberEmail { get; set; }
[Default(OrmLiteVariables.SystemUtc)]
public string AccessedOn { get; set; }
[CustomSelect("CONCAT(LEFT(Member.FirstName, 1),LEFT(Member.LastName,1))")]
public string MemberInitial { get; set; }
}
似乎我在 CustomSelect 中输入的内容没有被使用。
也许,我没有正确使用它?
另外,默认属性也不起作用。
我试过了,因为它是 doco 的一个例子。
任何想法将不胜感激。
提前致谢。
[CustomSelect]
仅适用于来源 table。选择自定义类型的结果用于将返回的结果集映射到 MemberResponse
类型,它 对执行的查询 没有任何影响。
与 [Default(OrmLiteVariables.SystemUtc)]
类似,它用于在创建 table 时定义默认值,仅在 创建列定义 时使用,所以它是仅对来源 Table 类型有用。
这两个属性只应添加到源 MemberAccess
上才能生效,您映射的 MemberResponse
可以在没有任何属性的情况下访问,例如:
public class MemberResponse
{
public Guid Id { get; set; }
public string MemberFirstName { get; set; }
public string MemberLastName { get; set; }
public string MemberEmail { get; set; }
public string AccessedOn { get; set; }
public string MemberInitial { get; set; }
}
Sql.Custom() API
在 v4.5.5 中添加的新 Sql.Custom()
API available on MyGet 将允许您 select 自定义 SQL 片段,例如:
var q = Db.From<MemberAccess>().LeftJoin<Member>()
.Select<MemberAccess,Member>((a,m) => new {
Id = a.Id,
MemberFirstName = m.FirstName,
MemberLastName = m.LastName,
MemberEmail = m.Email,
MemberInitial = Sql.Custom("CONCAT(LEFT(Member.FirstName,1),LEFT(Member.LastName,1))")
});
return Db.Select<MemberResponse>(q);