【问题标题】:Entity Framework bug with table name when add entity添加实体时带有表名的实体框架错误
【发布时间】:2015-05-17 04:51:18
【问题描述】:

我有表 BookCommentsFileComments。我有实体类 BookCommentFileComment

当我得到数据时,一切都很好。但是当我尝试添加数据时,我得到了错误。找不到 BooksComments 表或 FilesComments。我尝试使用 TableAttribute 类但没有帮助我。

我使用实体框架 6.1.3

更新

如果我将表名从 BookComments 重命名为 BooksComment。我无法获取数据并得到错误

无效的对象名称 dbo.BookComments

添加实体

    public void AddEntity(T entity)
    {
        this.Entities.Add(entity);
    }

    protected IDbSet<T> Entities
    {
            get
            {
                return this._entities ?? (this._entities = this._context.Set<T>());
            }

添加注释书控制器类

 public async Task<JsonResult> AddComment(int id, Comment comment)
        {
            try
            {
                CommentItem addComment = await Task.Run(() =>
                        {
                            var newcomment = this._booksService.AddComment(id, comment);
                            return AutoMapManager.GetMap<CommentItem, IComment>(newcomment);
                        });

                return this.Json(new { Result = true, comment = addComment }, JsonRequestBehavior.AllowGet);
            }
            catch (Exception e)
            {
                return this.Json(new { Result = false, e.GetBaseException().Message }, JsonRequestBehavior.AllowGet);
            }
        }
        }

BookService 类

 public IComment AddComment<T>(int bookId, T item) where T : new()
    {
        var comment = AutoMapManager.GetMap<BookComment, T>(item);
        comment.BookId = bookId;

        this._commentRepository.AddEntity(comment);
        this._commentRepository.SaveChanges();
        return comment;
    }

【问题讨论】:

  • Arw 有 2 个拼写错误,或者错误是否真的是 BooksComments 和 FilesComments?如果是这样,问题就很明显了。就像你说的,你的表是 BookComments(不是 BooksComments)和 FileCommemts(不是 FilesComments)。请参阅我在 EF 中命名表的问题:stackoverflow.com/questions/30101272/…
  • 我如何看到我可以获取数据,只有添加新数据的问题。如果我将表名重命名为 BooksComments。我可以读取数据并得到错误 Invalid object name dbo.BookComments
  • 问题可能出在您的对象模型上。从类中发布您的代码以及您的插入和获取方法。
  • 我使用通用存储库,我也有 ArticleComments,我没有问题。我发现了新的问题。我有论坛,命名空间是 SGN.Modules.Forums.Entities。但是当我尝试获取数据时,我得到了错误。因为 EF 尝试在 SGN.Core 中获取论坛实体
  • 发布您的代码。不看就很难猜出问题出在哪里。

标签: c# entity-framework-6


【解决方案1】:

检查以确保您在 SQL 中的表名与您的模型具有相同的大小写敏感性。实体框架使用 SQL(通常不区分大小写)进行查询……这就是您可以检索数据的原因。但是当您添加行时,EF 使用 CLR(区分大小写)来查找表实体。先看看是不是你的问题。

【讨论】:

    猜你喜欢
    • 2021-05-03
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2015-12-26
    相关资源
    最近更新 更多