Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无效的列名。该名称从未在代码中实现_C#_Asp.net_Asp.net Mvc_Entity Framework_Linq - Fatal编程技术网

C# 无效的列名。该名称从未在代码中实现

C# 无效的列名。该名称从未在代码中实现,c#,asp.net,asp.net-mvc,entity-framework,linq,C#,Asp.net,Asp.net Mvc,Entity Framework,Linq,我有一个简单的程序,我正在设置用于单元测试。出于某种原因,Entity Framework对我大喊大叫,并出现以下错误:列名“Author\u Id”无效 问题是我没有名为Author_Id的列,不在项目中,不在模型中,也不在数据库的表中。出于某种原因,它将_Id部分添加到我搜索的内容的末尾 示例:如果我将其设置为“搜索作者”,我将获得作者Id。AuthorId变为AuthorId Id,Authorit Id变为Authorit Id 我不知道我做错了什么。我搜索了整个解决方案,但什么也没找到

我有一个简单的程序,我正在设置用于单元测试。出于某种原因,Entity Framework对我大喊大叫,并出现以下错误:列名“Author\u Id”无效

问题是我没有名为Author_Id的列,不在项目中,不在模型中,也不在数据库的表中。出于某种原因,它将_Id部分添加到我搜索的内容的末尾

示例:如果我将其设置为“搜索作者”,我将获得作者Id。AuthorId变为AuthorId Id,Authorit Id变为Authorit Id

我不知道我做错了什么。我搜索了整个解决方案,但什么也没找到

它告诉我我的错误在这里:

public ViewResult Index()
{
    var books = db.Books.Include(b=>b.AuthorId);
    ViewBag.AlbumCount = books.Count();
    return View(books.OrderBy(b => b.Author.Id).ToList());
    //^^^^ Return is supposed to be doing the error. Fetching Name or 
}
我的作者模型如下:

public class Author
{
    [Key]
    public int Id { get; set; }

    [Display(Name = "Author")]
    public string Name { get; set; }

    [Display(Name = "Date of birth")]
    public DateTime? DateOfBirth { get; set; }

    [Display(Name = "Date of death")]
    public DateTime? DateOfDeath { get; set; }

    public ICollection<Book> Books { get; set; }
}
public class Book
{
    [Key]
    public int Id { get; set; }

    [Display(Name = "Select author")]
    public Author AuthorId { get; set; }

    [Required]
    public string Title { get; set; }

    [Display(Name = "Publication date")]
    public DateTime? PublicationDate { get; set; }

    public float? Edition { get; set; }

    public Author Author { get; set; }
}
Include方法用于加载相关实体,而不是像authord这样的单列。改为包含导航属性

替换

var books = db.Books.Include(b => b.AuthorId);

注意:authorId仍然被加载,因为它只是books表中的一列。

Include方法用于加载相关实体,而不是像authorId这样的单列。改为包含导航属性

替换

var books = db.Books.Include(b => b.AuthorId);


注意:authorId仍然被加载,因为它只是books表中的一列。

您有两个导航属性,而不是一个导航属性和一个外键属性

这不应该:

public class Book
{
    [Key]
    public int Id { get; set; }

    [Display(Name = "Select author")]
    public Author AuthorId { get; set; }

    [Required]
    public string Title { get; set; }

    [Display(Name = "Publication date")]
    public DateTime? PublicationDate { get; set; }

    public float? Edition { get; set; }

    public Author Author { get; set; }
}


您有两个导航属性,而不是一个导航属性和一个外键属性

这不应该:

public class Book
{
    [Key]
    public int Id { get; set; }

    [Display(Name = "Select author")]
    public Author AuthorId { get; set; }

    [Required]
    public string Title { get; set; }

    [Display(Name = "Publication date")]
    public DateTime? PublicationDate { get; set; }

    public float? Edition { get; set; }

    public Author Author { get; set; }
}


对不起,伙计们。我试图同时使用代码和数据库。我不得不删除旧表,并通过迁移重新创建它们。然后我还有两个不同的DBContext。一个代表身份,一个代表我。而且关系都搞砸了。不管怎样,如果有人有类似的问题,检查你的关系。并首先使用数据库或代码。别像我那样把它们混在一起。

对不起,伙计们。我试图同时使用代码和数据库。我不得不删除旧表,并通过迁移重新创建它们。然后我还有两个不同的DBContext。一个代表身份,一个代表我。而且关系都搞砸了。不管怎样,如果有人有类似的问题,检查你的关系。并首先使用数据库或代码。不要像我那样混合使用它们。

你也可以共享Fluent Api吗?我想它是在图书模型中寻找字段作者Id,因为看起来你试图将其用作外键。注释掉book中的Author属性和AuthorId属性。我敢打赌它能用。@Dylan,但它应该是外键。你应该用Fluent Api或注释配置导航属性。我看不到ForeignKey注释。所以,请检查ModelCreating方法的上下文。@AlexKudryashev此模型不是多对多关系,因此根据设计,此模型只支持每本书一位作者。您是否也共享Fluent Api?我认为它在书模型中查找字段author_Id,因为它看起来像您试图将其用作外键。注释掉book中的Author属性和AuthorId属性。我敢打赌它能用。@Dylan,但它应该是外键。你应该用Fluent Api或注释配置导航属性。我看不到ForeignKey注释。因此,请检查ModelCreating方法的上下文。@AlexKudryashev此模型不是多对多关系,因此根据设计,此模型每本书只支持一位作者。这将是最接近问题解决方案的模型。我也基本上没有一个有效的db映射。很多错误都是抓不到的!我没有看到错误类型的AuthorId Author而不是int。这将是最接近问题解决方案的。我也基本上没有一个有效的db映射。很多错误都是抓不到的!我没有看到错误类型的AuthorId Author而不是int。