entity-framework - EF代码第一个: The EntitySet name 'TestDBContext1.Customers' could not be found

标签 entity-framework

我收到此错误

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/

相关文章:

c# - 映射到现有的数据库表

.net - Entity Framework 通用存储库有什么优势吗?

entity-framework - 在创建POCO时处理 Entity Framework

entity-framework - Entity Framework 、DbSet<T>、Dispose() 性能问题

c# - 使用 Entity Framework 映射到现有表

.net - 首先从 Entity Framework 模型中的模型生成数据库时如何进行迁移

entity-framework - asp.net 5 (vnext) 和 Entity Framework 6

c# - 在 Code First Entity Framework 中为数据库中的现有列添加属性到模型

.net - 我实际上可以将单个实体附加到多个上下文吗

c# - 通用检查 Entity Framework 和存储库模式是否发生了变化