我收到此错误
其他信息:EntitySet名称'TestDBContext1.Customers' 无法找到。
我试图调用一个返回多个结果集的SQL Server存储过程。
这是我的完整代码:
private void button4_Click(object sender, EventArgs e)
{
using (var db = new TestDBContext1())
{
db.Database.Initialize(force: false);
// Create a SQL command to execute the stored procedure
var cmd = db.Database.Connection.CreateCommand();
cmd.CommandText = "[dbo].[MultiResultSet]";
try
{
db.Database.Connection.Open();
// Run the stored procedure
var reader = cmd.ExecuteReader();
// Read Blogs from the first result set
var customers = ((IObjectContextAdapter)db)
.ObjectContext
.Translate<Customer>(reader, "Customers", MergeOption.AppendOnly);
foreach (var item in customers)
{
Console.WriteLine(item.FirstName);
}
// Move to second result set and read Posts
reader.NextResult();
var Addresses = ((IObjectContextAdapter) db)
.ObjectContext
.Translate<Addresses>(reader, "Addresses", MergeOption.AppendOnly);
foreach (var item in Addresses)
{
Console.WriteLine(item.Address1);
}
}
finally
{
db.Database.Connection.Close();
}
}
}
此行引发上述错误:
var customers = ((IObjectContextAdapter)db)
.ObjectContext
.Translate<Customer>(reader, "Customers", MergeOption.AppendOnly);
我的数据库表格为Customers
和Addresses
。为什么我收到此错误?我的代码中要改变什么?
有趣的是,当我按照以下方式编码时,一切正常。
var customers = ((IObjectContextAdapter)db)
.ObjectContext
.Translate<Customer>(reader);
从代码中删除"Customers", MergeOption.AppendOnly
的那一刻,代码运行正常。只是不明白我上面的代码有什么问题。请有人帮助我理解这一点。感谢
答案 0 :(得分:0)
如果您的集合没有名称,则只需输入
var customers = ((IObjectContextAdapter)db).ObjectContext.Translate<Customer>(reader);
该MergeOption
的默认值已经是AppendOnly
,因此您也不必担心该参数。
答案 1 :(得分:-1)
我认为您的实体集没有名称。我想如果你将<a href="#" ontouchend="this.onclick=fix">test</a>
作为第二个输入传递给null
,它会做你想做的事情:
Translate