我4.3,POCO,數據庫首先使用實體框架和我收到以下錯誤:如何解決「內部.NET Framework數據提供程序錯誤1025」?
內部的.NET Framework數據提供程序錯誤1025
問題:我認爲我的查詢表達我的意圖,但我似乎遇到這個錯誤,所以我想知道如果有人知道我可以如何構建我的查詢不同來解決這個錯誤?
這裏的情景......
我有了2桌的SQL Server 2008數據庫 - A和B:
一個
- 援助(INT - 不null - 身份 - 主鍵)
- AName(nvarchar(10) - 非null)
乙
- 出價(INT - 不爲空 - 身份 - 主鍵)
- SomeName(nvarchar的(10) - 不爲空)
- 助劑(INT - 不爲空 - 外鍵連接在表A中AID)
我然後定義像這樣的上下文:
public class DatabaseContext : DbContext
{
public DatabaseContext(string name)
: base(name)
{
Configuration.AutoDetectChangesEnabled = false;
As = Set<A>();
Bs = Set<B>();
}
public DbSet<A> As { get; private set; }
public DbSet<B> Bs { get; private set; }
}
與實體類,像這樣:
public class A
{
public int AId { get; set; }
public string AName { get; set; }
public virtual ICollection<B> Bs { get; private set; }
public void AddB(B b)
{
if (b == null)
{
throw new ArgumentNullException("b");
}
if (Bs == null)
{
Bs = new List<B>();
}
if (!Bs.Contains(b))
{
Bs.Add(b);
}
b.A = this;
}
}
public class B
{
public int BId { get; set; }
public A A { get; set; }
public string SomeName { get; set; }
}
現在的查詢...
我要的是所有的作爲,每一個「B SomeName」是名稱的提供這樣的列表我這樣做:
var names = new[] {"Name1", "Name2"};
var ctx = new DatabaseContext("EFPlayingEntities");
var res = ctx.As.Where(a => a.Bs.Select(b => b.SomeName).All(names.Contains));
// Here I evaluate the query and I get:
// Internal .NET Framework Data Provider error 1025.
Console.WriteLine(res.Count());
要清楚明白我的意思,如果表中的數據是這樣的:
AId,AName
1,A1
2,A2
3,A3
4,A4
BId,SomeName,AId
1,Name1,1
2,Name2,1
3,Name1,2
4,Name1,3
5,Name3,3
6,Name1,4
7,Name2,4
我期望回到A1,A2和A4(所以上面的計數呼叫將返回3)。
你看看內部異常? – 2012-03-01 09:02:22
內部異常是空:-( – kmp 2012-03-01 09:06:00
names.Contains是無效代碼,不知道如何編譯,我懷疑你想使用相交(),而不是所有的()。 – 2012-03-01 12:51:50