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
Entity framework 实体框架:列名无效';组织结构ID';_Entity Framework - Fatal编程技术网

Entity framework 实体框架:列名无效';组织结构ID';

Entity framework 实体框架:列名无效';组织结构ID';,entity-framework,Entity Framework,我获取:错误:列名“OrganizationStructure\u ID”无效 public OrganizationStructure() { ChildrenItems = new HashSet<OrganizationStructure>(); InputDate = DateTime.Now; } public int ID { get; set; } public string Name { get

我获取:错误:列名“OrganizationStructure\u ID”无效

    public OrganizationStructure()
    {
        ChildrenItems = new HashSet<OrganizationStructure>();
        InputDate = DateTime.Now;
    }

    public int ID { get; set; }
    public string Name { get; set; }

    public virtual int? ParentID { get; set; }
    public int OrganizationID { get; set; }
    public int OrganizationTypeID { get; set; }
    public int OrganizationActivityID { get; set; }
    public int OrganizationLocationID { get; set; }

    public string AddRemark { get; set; }
    public int UserId { get; set; }
    public DateTime InputDate { get; set; }
    public int? RemAttr { get; set; }

    public virtual ICollection<OrganizationStructure> ChildrenItems { get; set; }

这是因为您没有将FK属性与导航属性配对。我希望
ParentID
应该指向parent
OrganizationStructure
ChildrenItems
应该指向children
organizationstructures

如果您的模型不包含父级
Parent
导航属性到父级
OrganizationStructure
,则必须使用fluent API告诉EF
ParentID
是FK:

modelBuilder.Entity<OrganizationStructure>()
            .HasMany(o => o.ChildrenItems)
            .WithOptional()
            .HasForeignKey(c => c.ParentID);
modelBuilder.Entity()
.HasMany(o=>o.ChildrenItems)
.WithOptional()
.HasForeignKey(c=>c.ParentID);

我发现,当您有一个ICollection引用一个表,而它没有可以找出的列时,它会创建一个供您尝试在表之间建立连接的列。这在ICollection中特别发生,让我“疯狂”地试图解决它。

我遇到了一个类似的问题,删除了公共虚拟ICollection的不需要的条目,解决了它。

如果您将子实体中的引用字段声明为简单字段,而不是属性,也可能是这样

int ParentId  //will be ignored; 

int ParentId {get; set;} // it'ok (but could be ignored 
                         //if the parent entity name isn't 'Parent'); 

[ForeignKey("MyParentEntity")] 
int ParentId {get; set;} // is the best way (or use fluent-api)

如果这是一个测试项目,请确保更新了测试项目的连接字符串

我已将该项目升级到较新版本的.Net Framework,因此我认为与Entity Framework库存在冲突,卸载/安装Entity Framework对我有效

uninstall-package entityframework
install-package entityframework

转到SQL server管理->工具->SQL server探查器

启动一个分析器。使用橡皮擦清除所有事件。 使用Postman发送请求,或者只调用Queryable来执行Sql命令

从探查器复制生成的查询并粘贴到SQL server管理中(为了在SQL语句中转换此字符串,您必须做一些小的更改,将参数从末尾移动到变量)
执行查询,您将看到哪个表需要此列。

OrganizationStructure
一个实体(来自EF?)您得到的异常是什么?EF,异常:无效的列名“OrganizationStructure\u ID”显然,名为的自动外键在某个点从{entity}ID更改为{entity}\u ID。EF5可能。@boomhauer:在派生的
DbContext
类中重写
OnModelCreating
方法,并将所有映射放在那里。另一个选项是使用
EntityTypeConfiguration
派生类,并在
OnModelCreating
中注册它。不过,我知道如何将foreignkey attibute添加到为我处理此问题的模型中。但是thanks@boomhauer,你把什么外键属性放在哪里了?有没有办法关闭魔法。我有一个带有HasForeignKey的映射文件,但仍然会出现此错误。我认为有一个特定的映射文件会禁用约定wireup?这也可能是因为您将子实体中的引用字段声明为简单字段,而不是属性!int ParentId-将被忽略;int ParentId{get;set;}-it'ok(但如果父实体名称不是'parent',则可以忽略);[ForeignKey(“MyParentEntity”)]intparentid{get;set;}-最好的方法(或使用fluentapi)在这里也是一样的,这让我很痛苦,直到我发现它对我有用。谢谢
uninstall-package entityframework
install-package entityframework