簡體   English   中英

MySql 和實體框架導致“未將對象引用設置為對象的實例”。

[英]MySql & Entity Framework causing “Object reference not set to an instance of an object.”

如果這有點含糊,請原諒我......我正在將 MySql 連接器用於基於實體框架的應用程序。

我的內容表中有一條記錄,我正在嘗試獲取該記錄,但是每當它嘗試獲取記錄時,我都會收到此異常:

未將對象引用設置為對象的實例。

在這一行:

Data.Entities.Content content = this.SiteData.Content.Take(1).SingleOrDefault();

我已經檢查過 SiteData 是一個實例(......它是),但是當我檢查Content ,它似乎沒有任何記錄,所以我假設Take(1)失敗......我可能是錯的。

這是堆棧跟蹤:

[NullReferenceException:未將對象引用設置為對象的實例。]
MySql.Data.Entity.SelectStatement.GetDefaultColumnsForTable(TableFragment table) +64
MySql.Data.Entity.SelectStatement.GetDefaultColumnsForFragment(InputFragment input) +90
MySql.Data.Entity.SelectStatement.AddDefaultColumns(范圍范圍)+87
MySql.Data.Entity.SelectStatement.Wrap(Scope scope) +37
MySql.Data.Entity.SelectGenerator.WrapIfNotCompatible(SelectStatement select, DbExpressionKind expressionKind) +69
MySql.Data.Entity.SelectGenerator.Visit(DbLimitExpression 表達式) +37 System.Data.Common.CommandTrees.DbLimitExpression.Accept(DbExpressionVisitor 1 visitor) +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
1 visitor) +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
1 visitor) +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
1 位訪客) +25

MySql.Data.Entity.SelectGenerator.GenerateSQL(DbCommandTree 樹) +60 MySql.Data.MySqlClient.MySqlProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree) +329
System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree commandTree) +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 commandTree) +125
System.Data.Objects.Internal.ObjectQueryExecutionPlan.Prepare(ObjectContext context, DbQueryCommandTree tree, Type elementType, MergeOption mergeOption, Span span, ReadOnlyCollection 1 compiledQueryParameters, AliasGenerator aliasGenerator) +453
System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable
1 compiledQueryParameters, AliasGenerator aliasGenerator) +453
System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable
1 compiledQueryParameters, AliasGenerator aliasGenerator) +453
System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable
1 forMergeOption) +736

System.Data.Objects.ObjectQuery 1.GetResults(Nullable 1 forMergeOption) +131
System.Data.Objects.ObjectQuery 1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +36 System.Linq.Enumerable.SingleOrDefault(IEnumerable 1 source) +179 System.Data.Objects.ELinq.ObjectQueryProvider.b__2 (IEnumerable 1 sequence) +41
System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable
1 sequence) +41
System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable
1 sequence) +41
System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable
1 query, Expression queryRoot) +59

System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(表達式) +133
System.Data.Entity.Internal.Linq.DbQueryProvider.Execute(Expression expression) +87 System.Linq.Queryable.SingleOrDefault(IQueryable`1 source) +251 SamsCreative.Home.Page_Load(Object sender, EventArgs e) in g:\\軟件開發\\項目\\SamsCreative\\SamsCreative\\Home.aspx.cs:17
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51 System.Web.UI.Control.OnLoad(EventArgs e) +92
System.Web.UI.Control.LoadRecursive() +54
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772

我真的不知道是什么原因造成的……任何幫助將不勝感激!

正如“評論”中所述:

嗯...試試這個:

YourDbContext xxx = new YourDbContext();
var query = (from p in xxx select p).FirstOrDefault(); 

首先實例化你的 DbContext。

您應該在 dbContext 上添加 dbConfigurationType 屬性。

    [DbConfigurationType(typeof(MySqlEFConfiguration))]
    public class MysqlDbContext: DbContext
    {
        //Add your Dbsets here

        public MysqlDbContext()

            //Reference the name of your connection string
            : base("ConnectionStringName")
        {
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM