我收到此错误
Additional information: The EntitySet name 'TestDBContext1.Customers' could not be found.
我正在尝试调用返回多个结果集的 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);
我的数据库表是客户
和地址
。为什么我会收到此错误?我的代码需要更改什么?
有趣的是,当我按照下面的方式编码时,一切都会正常工作。
var customers = ((IObjectContextAdapter)db)
.ObjectContext
.Translate<Customer>(reader);
当我从代码中删除 "Customers", MergeOption.AppendOnly
时,代码就可以正常工作了。只是不明白我上面的代码出了什么问题。请有人帮助我理解这一点。谢谢
最佳答案
如果你的集合没有名称,你可以直接写
var customers = ((IObjectContextAdapter)db).ObjectContext.Translate<Customer>(reader);
该 MergeOption
的默认值已经是 AppendOnly
,因此您也不必担心该参数。
关于entity-framework - EF代码第一个: The EntitySet name 'TestDBContext1.Customers' could not be found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39703225/