我使用了資料庫優先的方法。 模型是正確的(或者至少看起來是這樣)。 但我總是得到這個錯誤。求你了,我已經試過很多方法了。 我的程式的完整代碼(甚至包括我創建資料庫的sql腳本 是在這里。https://github.com/AntonioParroni/test-task-for-backend-stack/blob/main/Server/Models/ApplicationContext.cs
因為我有一臺Mac。我用dotnet ef cli命令創建了我的模型(dbcontext scaffold)。 我可以使用我的背景關系。但是我不能接觸任何DbSet。
public static void Main(string[] args)。
{
using (ApplicationContext context = new ApplicationContext())
{
Console.WriteLine(context.Database.CanConnect())。
var months = context.Months.ToList();
foreach (var month in months)
{
Console.WriteLine(month.MonthName)。
}
}
//CreateHostBuilder(args).Build().Run();
}
這并不是我第一次使用EF。以前在許多簡單的專案或任務中,一切都運行良好。而在這里.... 不管我做什么(我甚至嘗試重命名我所有的列名,洗掉所有的表,除了一個,修改背景關系代碼,在一個新的完全空白的專案中使用這個專案的相同步驟。 它總是...
Unhandled exception. System.TypeInitializationException。The type initializer for 'Microsoft。 EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor'拋出一個exception。
--> System.TypeInitializationException。The type initializer for 'Microsoft. EntityFrameworkCore.Query.QueryableMethods'拋出一個exception。
--> System.InvalidOperationException。Sequence包含多于一個匹配元素
在System.Linq.ThrowHelper。 ThrowMoreThanOneMatchException() in System. Linq.dll:token 0x600041c 0xa。
ect....
這里是我的軟體包參考檔案
"restore"。 {"projectUniqueName":"/Users/mac/Documents/GitHub/test-task-for-backend-stack/Server/Server。 csproj",
"projectName":"Server","projectPath"。 "/Users/mac/Documents/GitHub/test-task-for-backend-stack/Server/Server。 csproj",
"outputPath"。 "/Users/mac/Documents/GitHub/test-task-for-backend-stack/Server/obj/","projectStyle":
"PackageReference","originalTargetFrameworks"。 ["net6. 0"],"sources":{"https://api. nuget.org/v3/index.json":{}},
"frameworks":{"net6。 0":{"targetAlias":"net6。 0","projectReferences"。 {}},
"warningProperties":{" warnAsError"。 標點符號">}}" frameworks"。 {"net6. 0":
{"targetAlias":"net6. 0"," dependencies"。 {"EntityFramework"/span>:
{"target"/span>。 "Package","version":" [6. 4.4, )"},
"Microsoft.EntityFrameworkCore. Design":{"include"。 "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent":"All","target"。 "Package","version":" [5. 0.0, )"},
"Microsoft.EntityFrameworkCore. SqlServer":{"目標"。 "Package","version":" [5. 0.0, )"},
"Swashbuckle. AspNetCore":{"目標"。 "Package","version":" [5. 6.3, )"}},
"進口"。 ["net461"/span>。 "net462", "net47"。 "net471", "net472", "net48"],
"assetTargetFallback"。 true,"warning":true,
"frameworkReferences":{"Microsoft.AspNetCore. :{"privateAssets"/span>: "none"},
"Microsoft.NETCore。 App":{"privateAssets"。 "all"}},
"runtimeIdentifierGraphPath":"/usr/local/share/dotnet/SDK/6.0.100-preview.6 .21355.2/RuntimeIdentifierGraph.json"}}
已經過了幾天了。我變得非常困惑和瘋狂。 為什么會發生這種情況......而且為什么互聯網上沒有那么多關于這種錯誤的資訊。請給我指出正確的方向吧。
uj5u.com熱心網友回復:
你有net6.0目標框架,它仍然沒有發布,而你已經安裝了EF6,這是以前的迭代Entity Framework(主要用于遺留的.NET Framework專案),你也有EF Core(它的現代迭代),但版本較舊--5.0(你實際上是在使用它的背景關系,見那里的using Microsoft.EntityFrameworkCore;陳述句)。
嘗試洗掉EntityFramework包并安裝Microsoft.EntityFrameworkCore.SqlServer的預覽版,并完全洗掉或安裝Microsoft.EntityFrameworkCore.Design的預覽版。(此外,我建議將你的SDK更新為rc,并安裝rc版本的軟體包)。
或者嘗試洗掉對EntityFramework的參考(不是Core one),并將目標框架改為net5.0(如果你的機器上安裝了它)。
至于為什么你會看到這個例外 - 我猜測這與在 .NET 6 中為 Queryable 添加的新方法有關,這使得其中一個 this 檢查失敗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/323117.html
標籤:
