【发布时间】:2013-10-13 08:47:03
【问题描述】:
如果这有点含糊,请原谅我...我正在将 MySql 连接器用于基于实体框架的应用程序。
我的 Content 表中有一条记录,我正在尝试获取该记录,但每当它尝试获取记录时,我都会收到此异常:
对象引用未设置为对象的实例。
在这一行:
Data.Entities.Content content = this.SiteData.Content.Take(1).SingleOrDefault();
我已经检查过 SiteData 是一个实例(......它是),但是当我检查 Content 时,它似乎没有任何记录,所以我假设 Take(1) 失败......我可能是错的。
这是堆栈跟踪:
[NullReferenceException: 对象引用未设置为 对象。]
MySql.Data.Entity.SelectStatement.GetDefaultColumnsForTable(TableFragment 表)+64
MySql.Data.Entity.SelectStatement.GetDefaultColumnsForFragment(InputFragment 输入)+90
MySql.Data.Entity.SelectStatement.AddDefaultColumns(范围范围)+87
MySql.Data.Entity.SelectStatement.Wrap(范围范围)+37
MySql.Data.Entity.SelectGenerator.WrapIfNotCompatible(SelectStatement 选择,DbExpressionKind 表达式Kind) +69
MySql.Data.Entity.SelectGenerator.Visit(DbLimitExpression 表达式) +37 System.Data.Common.CommandTrees.DbLimitExpression.Accept(DbExpressionVisitor1 visitor) +251 访客)+25
MySql.Data.Entity.SqlGenerator.VisitInputExpression(DbExpression e, String name, TypeUsage type) +35
MySql.Data.Entity.SelectGenerator.VisitInputExpressionEnsureSelect(DbExpression e, String name, TypeUsage type) +21
MySql.Data.Entity.SelectGenerator.Visit(DbProjectExpression expression) +38
System.Data.Common.CommandTrees.DbProjectExpression.Accept(DbExpressionVisitor
MySql.Data.Entity.SelectGenerator.GenerateSQL(DbCommandTree 树) +60 MySql.Data.MySqlClient.MySqlProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree) +329
System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree 命令树)+125
System.Data.EntityClient.EntityCommandDefinition..ctor(DbProviderFactory storeProviderFactory, DbCommandTree commandTree) +1411
System.Data.EntityClient.EntityProviderServices.CreateCommandDefinition(DbProviderFactory storeProviderFactory, DbCommandTree commandTree) +78
System.Data.EntityClient.EntityProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree) +159
System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree 命令树)+125
System.Data.Objects.Internal.ObjectQueryExecutionPlan.Prepare(ObjectContext 上下文,DbQueryCommandTree 树,类型 elementType,MergeOption mergeOption, Span span, ReadOnlyCollection1 compiledQueryParameters, AliasGenerator aliasGenerator) +4531 forMergeOption) +736
System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable
System.Data.Objects.ObjectQuery1.GetResults(Nullable1 forMergeOption) +131
System.Data.Objects.ObjectQuery1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +36 System.Linq.Enumerable.SingleOrDefault(IEnumerable1 来源)+179 System.Data.Objects.ELinq.ObjectQueryProvider.b__2(IEnumerable1 sequence) +411 查询,表达式 queryRoot) +59
System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable
System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(表达式 表达)+133
System.Data.Entity.Internal.Linq.DbQueryProvider.Execute(表达式 表达式)+87 System.Linq.Queryable.SingleOrDefault(IQueryable`1 来源)+251 SamsCreative.Home.Page_Load(对象发送者,EventArgs e) 在 g:\软件中 开发\项目\SamsCreative\SamsCreative\Home.aspx.cs:17
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(对象发送者, EventArgs e) +51 System.Web.UI.Control.OnLoad(EventArgs e) +92
System.Web.UI.Control.LoadRecursive() +54
System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) +772
我真的不知道是什么原因造成的......任何帮助将不胜感激!
【问题讨论】:
-
试试
var content = this.SiteData.Content.Take(1).SingleOrDefault();;还有一件事,this的内容是什么? -
@Tico...好吧,我试过使用 var 而不是指定确切的类型...同样的问题!。内容“应该”指的是由一些字符串和一些小数组成的简单实体。 this.SiteData 是对 DbContext 实例的引用
-
哼...试试这个:
YourDbContext xxx = new YourDbContext(); var query = (from p in xxx select p).FirstOrDefault();先实例化你的 DbCONtext。 -
啊! FirstOrDefault();成功了! :-) 谢谢!
-
不错!很高兴我能帮上忙!
标签: c# mysql asp.net entity-framework nullreferenceexception