Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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
.net 指定的架构无效。错误:关系';实体a#u实体b';未加载,因为类型为';实体b';不可用 背景_.net_Entity Framework_Entity Framework 6 - Fatal编程技术网

.net 指定的架构无效。错误:关系';实体a#u实体b';未加载,因为类型为';实体b';不可用 背景

.net 指定的架构无效。错误:关系';实体a#u实体b';未加载,因为类型为';实体b';不可用 背景,.net,entity-framework,entity-framework-6,.net,Entity Framework,Entity Framework 6,我正在开发一个应用程序,它使用实体框架从第三方应用程序查询数据库。数据库有大量的表,没有外键。我已经使用实体框架fluentapi将相关表映射到实体 实体 名称空间应用程序实体 { 公务舱票 { 公共int Id{get;set;} 公共虚拟销售订单销售订单{get;set;} public int SalesOrderId{get;set;} } 公共类销售订单 { 公共int Id{get;set;} 公共虚拟ICollection票证{get;set;} 公共虚拟ICollection行{

我正在开发一个应用程序,它使用实体框架从第三方应用程序查询数据库。数据库有大量的表,没有外键。我已经使用实体框架fluentapi将相关表映射到实体

实体
名称空间应用程序实体
{
公务舱票
{
公共int Id{get;set;}
公共虚拟销售订单销售订单{get;set;}
public int SalesOrderId{get;set;}
}
公共类销售订单
{
公共int Id{get;set;}
公共虚拟ICollection票证{get;set;}
公共虚拟ICollection行{get;set;}
}
}
映射 请注意,列和表名映射是不匹配的,因为我认为它们不相关

namespace App.Mappings
{
    public class TicketMap : EntityTypeConfiguration<Ticket>
    {
        public TicketMap() {}
    }

    public class SalesOrderMap : EntityTypeConfiguration<SalesOrder>
    {
        public SalesOrderMap()
        {
            HasMany(t => t.Tickets)
                .WithRequired(t => t.SalesOrder)
                .HasForeignKey(t => t.SalesOrderId);

            HasMany(t => t.Lines)
                .WithRequired(t => t.SalesOrder)
                .HasForeignKey(t => t.SalesOrderId);
        }
    }
}
namespace应用程序映射
{
公共类TicketMap:EntityTypeConfiguration
{
公共TicketMap(){}
}
公共类SalesOrderMap:EntityTypeConfiguration
{
public SalesOrderMap()
{
有很多票(t=>t张票)
.WithRequired(t=>t.SalesOrder)
.HasForeignKey(t=>t.SalesOrderId);
有许多(t=>t行)
.WithRequired(t=>t.SalesOrder)
.HasForeignKey(t=>t.SalesOrderId);
}
}
}
实体及其映射已在实体框架中正确注册

问题 当我尝试运行查询时,我收到以下
MetadataException

指定的架构无效。错误:由于类型“App.Ticket”不可用,因此未加载关系“App.SalesOrder\u Tickets”

请注意,上面消息中显示的
Ticket
名称空间是错误的。实体类实际上位于
App.Entities.Ticket
中。然而,我不知道这是否与问题有关

我试过的
  • 检查关系是否正确配置
  • 按照中的建议检查模型中的重复类
  • 检查实体是否位于中建议的相同命名空间中

  • 问题在于这两条线:

    public virtual ICollection<Ticket> Tickets { get; set; }
    public virtual ICollection<Ticket> Lines { get; set; }
    
    公共虚拟ICollection票证{get;set;}
    公共虚拟ICollection行{get;set;}
    
    第二个集合的元素类型应与第一个集合的元素类型不同:

    public virtual ICollection<TicketLine> Lines { get; set; }
    
    公共虚拟ICollection行{get;set;}
    

    更改此选项修复了问题。

    我收到了相同的错误消息,问题是我有两个不同的edmx模型,具有相同名称的实体。我猜EF无法加载一些相关实体,并给出了一个消息


    我解决了从一个模型中删除实体(我想更改名称也可以)并重建解决方案的问题

    也可能与这个问题有关。我也有同样的问题,但不幸的是没有发现任何类似的错误。被困了几个小时!有类似的问题,重复/不明确的属性是我的根本原因。我在我的POCO上有一个带有PropertyA的基类实现,它与一个显式接口相结合,还编译了PropertyA,因为显式接口实现不会隐藏现有属性。有效的C#但EF6仍然失败。。。重命名一个属性修复了它。@josant所以不能有两个相同类型的集合?
    public virtual ICollection<TicketLine> Lines { get; set; }