微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLQuery 未捕获泛型类型

如何解决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 举报,一经查实,本站将立刻删除。