Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Asp.net mvc 为什么实体框架要查找这些不存在的列?_Asp.net Mvc_Entity Framework - Fatal编程技术网

Asp.net mvc 为什么实体框架要查找这些不存在的列?

Asp.net mvc 为什么实体框架要查找这些不存在的列?,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我不知道为什么会出现这样的情况,在解决方案中搜索任何这些列都不会得到任何结果!我觉得这和外键有关 Invalid column name 'Address_Id1'. Invalid column name 'Address1_Id1'. Invalid column name 'Address_Id'. Invalid column name 'Address_Id1'. 以下是更新的代码: CustomDbContext db = new CustomDbContext (); var u

我不知道为什么会出现这样的情况,在解决方案中搜索任何这些列都不会得到任何结果!我觉得这和外键有关

Invalid column name 'Address_Id1'.
Invalid column name 'Address1_Id1'.
Invalid column name 'Address_Id'.
Invalid column name 'Address_Id1'.
以下是更新的代码:

CustomDbContext db = new CustomDbContext ();
var user =  db.User.First(a => a.Id != 0);

问题很清楚:无论是您的代码(属性、fluent API),还是EF约定都没有配置FKs

如果要使用约定,则必须调整属性和外键的名称,以便对它们进行配置。如果您有:

Invalid column name 'Address_Id'.
Invalid column name 'Address_Id1'.
或者使用
[ForeignKey(“”)]
属性:

注释可以放置在外键属性上并指定关联的导航属性名称,也可以放置在导航属性上并指定关联的外键名称


EDMX中的列是假的吗?您是先使用代码还是先使用数据库。您使用的是什么版本的EF。你还可以提供类地址和你对EF的调用。我假设你已经添加了这些列,然后试图从设计器中删除它们-它们可能还在某个地方。检查EDMX文件的XML。@James在整个解决方案中搜索这些术语没有任何结果。@RobertHarvey没有。在EDMX图表中没有。我遵循了您的第一个建议,这有助于消除前两个错误,但后两个错误仍然存在。有什么想法吗?您是否同时更改了导航属性和外键字段?(我只对其中一个字段进行了修改,以向您展示如何进行修改,但必须同时对这两个字段进行修改)如果您对这两个字段都进行了修改,则应该显示您的代码现在的样子,以及错误是什么。我认为这是因为User和User1缺少配置/约定。试着解决这个问题。如果您不需要查找与某个地址相关的用户,您甚至可以删除此属性。我删除了这些属性,但问题仍然存在。我认为它希望地址表的主键是address\u id,而不仅仅是id。这可能解释了它为什么要查找address\u id和address\u Id1。我会继续调试这个,但如果你有任何进一步的想法,请告诉我。很抱歉,我不太了解你的模型是什么样子的。你能拍下你的模特的样子吗?同时,在VisualStudio中安装Entity Framework Powertools,右键单击包含DbContext类的文件,然后选择“查看EDM模型(只读)”(或类似的内容)。在这里,您将看到EF从您的代码中推断出的模式的数据。尝试使用fleunt api或属性对其进行微调,而不是依赖于约定。
CustomDbContext db = new CustomDbContext ();
var user =  db.User.First(a => a.Id != 0);
public partial class User
{

    public int Id { get; set; }

    public Nullable<int> InvoiceAddress_Id { get; set; }
    public Nullable<int> MailAddress_Id { get; set; }

    public virtual Address InvoiceAddress_ { get; set; }
    public virtual Address MailAddress_ { get; set; }
}
Invalid column name 'Address_Id'.
Invalid column name 'Address_Id1'.
public Nullable<int> InvoiceAddress_Id { get; set; }
public virtual Address Address { get; set; }
public Nullable<int> InvoiceAddressId { get; set; }
public virtual Address InvoiceAddress { get; set; }
  protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<User>()
            .HasOptional(u => u.Address)
            .WithMany();
            .HasForeingKey(a => a.InvoiceAddres_Id);
    }
[ForeignKey("Address")]
public Nullable<int> InvoiceAddress_Id { get; set; }
[ForeignKey("InvoiceAddress_Id")]
public virtual Address Address { get; set; }