context.Database.SqlQuery<>()查询

EF Core查询与模型兼容性
本文探讨了使用EF Core进行数据库查询时遇到的问题:当实体类与查询语句不完全匹配时产生的错误及解决方法。特别关注了实体类与自定义模型在查询中的表现差异。
public class Student 
    {
        public int ID { get; set; }

        public string Name { get; set; }

        public int Age { get; set; }

    }

ctx.Database.SqlQuery<Student>("select Name,Age from student", parameter).ToList();
1、如果Student是实体类的话,上面语句会报错误-{"数据读取器与指定的“Student”不兼容。类型“ID”的成员在同名的数据读取器中没有对应的列。"}	System.Data.Entity.Core.EntityException {System.Data.Entity.Core.EntityCommandExecutionException},必须在查询的语句中包含所有实体中的列名
2、如果Student是自定义的贫血模型,上面语句则不会报错
c# Microsoft.Data.SqlClient.SqlException HResult=0x80131904 Message=Invalid object name 'AspNetUsers'. Source=Core Microsoft SqlClient Data Provider StackTrace: 於 Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__211_0(Task`1 result) 於 System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke() 於 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- 先前位置中的堆疊追蹤結尾 --- 於 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) 於 System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- 先前位置中的堆疊追蹤結尾 --- 於 Microsoft.EntityFrameworkCore.Storage.RelationalCommand.<ExecuteReaderAsync>d__18.MoveNext() 於 Microsoft.EntityFrameworkCore.Storage.RelationalCommand.<ExecuteReaderAsync>d__18.MoveNext() 於 Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.<InitializeReaderAsync>d__21.MoveNext() 於 Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.<ExecuteAsync>d__7`2.MoveNext() 於 Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.<MoveNextAsync>d__20.MoveNext() 於 System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() 於 Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.<SingleOrDefaultAsync>d__16`1.MoveNext() 於 Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.<SingleOrDefaultAsync>d__16`1.MoveNext() 於 Microsoft.AspNetCore.Identity.UserManager`1.<FindByEmailAsync>d__115.MoveNext() 於 StudentManagement.Services.Iplementations.AuthService.<LoginAsync>d__3.MoveNext() 在 E:\2026vs\StudentManagement\StudentManagement\Services\Iplementations\AuthService.cs:行 31 中 於 StudentManagement.Controllers.LoginController.<Login>d__3.MoveNext() 在 E:\2026vs\StudentManagement\StudentManagement\Controllers\LoginController.cs:行 43 中 於 Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.<Execute>d__0.MoveNext() 於 System.Runtime.CompilerServices.ValueTaskAwaiter`1.GetResult() 於 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<<InvokeActionMethodAsync>g__Awaited|12_0>d.MoveNext() 於 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<<InvokeNextActionFilterAsync>g__Awaited|10_0>d.MoveNext()
最新发布
09-13
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苍狼_2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值