首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实体框架引发异常-无效的对象名称'dbo.BaseCs‘

实体框架引发异常-无效的对象名称'dbo.BaseCs‘
EN

Stack Overflow用户
提问于 2011-10-16 19:52:37
回答 16查看 128.9K关注 0票数 63

我遵循了Adam的回答here,实体框架现在可以工作了,Seed()方法也可以工作了。

但是当我尝试像这样访问数据库时:

代码语言:javascript
运行
复制
    public User FindUserByID(int id)
    {
        return (from item in this.Users
                where item.ID == id
                select item).SingleOrDefault();
    }
  .............................................................................
    // GET: /Main/

    public ActionResult Index(int? id)
    {
        var db = UserDataBaseDB.Create();

        if (!id.HasValue)
            id = 0;

        return View(db.FindUserByID(id.Value));
    }

它在return (from item in this.Users抛出一个异常,声明:

Exception Details: System.Data.SqlClient.SqlException: Invalid object name 'dbo.BaseCs'.

我尝试用:return this.Users.ElementAt(id);替换它,但是它抛出了这个异常。

LINQ to Entities does not recognize the method 'MySiteCreator.Models.User ElementAt[User](System.Linq.IQueryable1MySiteCreator.Models.User,Int32)‘方法,而此方法不能转换为存储表达式。

有谁可以帮我?

谢谢!

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2011-10-16 21:18:21

异常详细信息: System.Data.SqlClient.SqlException:无效的对象名称'dbo.BaseCs‘

此错误意味着EF正在将您的LINQ转换为使用名为dbo.BaseCs的对象(最有可能是一个表)的sql语句,该对象在数据库中不存在。

检查您的数据库并验证该表是否存在,或者您是否应该使用其他表名。此外,如果您可以发布一个链接到您正在遵循的教程,它将有助于跟随您正在做的事情。

票数 85
EN

Stack Overflow用户

发布于 2013-07-03 08:30:54

这很可能是模型类名和表名不匹配,正如'adrift‘所提到的。当您想要保持模型类名与表名不同(我为OAuthMembership做的那样)时,请使它们相同或使用下面的示例。请注意,模型类名是OAuthMembership,而表名是webpages_OAuthMembership。

为模型提供表属性:

代码语言:javascript
运行
复制
[Table("webpages_OAuthMembership")]
public class OAuthMembership

或者通过覆盖DBContext OnModelCreating来提供映射:

代码语言:javascript
运行
复制
class webpages_OAuthMembershipEntities : DbContext
{
    protected override void OnModelCreating( DbModelBuilder modelBuilder )
    {
        var config = modelBuilder.Entity<OAuthMembership>();
        config.ToTable( "webpages_OAuthMembership" );            
    }
    public DbSet<OAuthMembership> OAuthMemberships { get; set; }        
}
票数 31
EN

Stack Overflow用户

发布于 2014-03-21 21:06:59

如果您提供这样的映射:

代码语言:javascript
运行
复制
 protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new ClassificationMap());
        modelBuilder.Configurations.Add(new CompanyMap());
        modelBuilder.Configurations.Add(new GroupMap());
        ....  
    }

记住添加BaseCs的映射。

如果它丢失了,您将不会得到编译错误。但是当你使用实体时,你会得到一个运行时错误。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7784064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档