如何解决SQLQuery 未捕获泛型类型
private List<T> GetList<T>( )
where T : MyResult,new()
{
var db = new MyDbContext();
var sql = @$"
SET NOCOUNT ON;
create table #temp ( Description nvarchar(800) )
insert into #temp (Description) select Description from SomeOtherTable
select description from #temp
where charindex(char(13),description) > 0 and
charindex(char(10),description) > 0
"
return db.Database.sqlQuery<T>(sql).ToList();
}
public override IEnumerable<NonPersistentObjectBase> MyGetData()
{
var t = GetType();
var o = Activator.CreateInstance(t) as MyRec;
return o.GetList<MyResult>(t).Cast<NonPersistentObjectBase>().ToList();
}
public class MyResult : NonPersistentObjectBase {
[ModelDefault("RowCount","5")]
public string Description { get; set; }
public bool HasCrLf => Description.Contains( "\r\n");
public bool HasCr => Description.Contains("\r"); // returns false
public bool HasLf => Description.Contains("\n"); // returns true
}
创建正确的 MyRec 对象,只是它们不包含“\r\n”。也就是说,即使数据包含 char(13)+char(10)
,所有 HasCrLf 字段都是假的EntityFramework 是 6.4.4
在管理工作室我可以跑
select top 10 description,charindex(char(13),description) as PosCR,charindex(char(10),description) as PosLF from someothertable
并看到数据确实具有 CRLF 组合。 我注意到结构是 varchar 而不是 nvarchar
我的应用程序是 Winforms 我尝试在 Ubuntu 和 Windows 上运行 sql Express。
[更新]
AlwaysLearning 是正确的。 EF 似乎正在剥离回车符。
我更新了要显示的业务对象类。
问题不在 sql 中,因为我返回了记录。
我还添加了 xaf 作为标签,因为我正在使用它,尽管很难看出它是如何参与的。
无论#temp 描述是varchar 还是nvarchar 都会出现问题
无论SomeOtherTable中的字段是varchar还是nvarchar都会出现问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。