gpt4 book ai didi

.net - 指定的架构无效。错误 : The relationship 'EntityA_EntityBs' was not loaded because the type 'EntityB' is not available

转载 作者:行者123 更新时间:2023-12-05 00:27:11 25 4
gpt4 key购买 nike

背景

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

实体

namespace App.Entities
{
public class Ticket
{
public int Id { get; set; }

public virtual SalesOrder SalesOrder { get; set; }
public int SalesOrderId { get; set; }
}

public class SalesOrder
{
public int Id { get; set; }

public virtual ICollection<Ticket> Tickets { get; set; }
public virtual ICollection<Ticket> Lines { 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);
}
}
}

实体及其映射已正确注册到 Entity Framework 。

问题

我收到以下 MetadataException当我尝试运行查询时:

Schema specified is not valid. Errors: The relationship 'App.SalesOrder_Tickets' was not loaded because the type 'App.Ticket' is not available.



注意 Ticket的命名空间上面的消息显示是错误的。实体类实际上在 App.Entities.Ticket .但是,我不知道这是否与问题有关。

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

    问题是这对线:

    public virtual ICollection<Ticket> Tickets { get; set; }
    public virtual ICollection<Ticket> Lines { get; set; }

    第二个集合的元素类型应该与第一个不同:
    public virtual ICollection<TicketLine> Lines { get; set; }

    改变这个解决了问题。

    关于.net - 指定的架构无效。错误 : The relationship 'EntityA_EntityBs' was not loaded because the type 'EntityB' is not available,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21128492/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com