C# EF 7(核心):另一个数据库中的依赖对象

C# EF 7(核心):另一个数据库中的依赖对象,c#,.net,entity-framework-core,C#,.net,Entity Framework Core,我是EF7新手,使用1.0.0-rc1-final 使用数据库优先设计(数据库已经存在,因此必须使用它) 我有2个实体-父实体在一个数据库中,从属子实体在同一服务器实例上的另一个数据库中 我有两个数据库上下文,每个数据库分别有一个,并相应地注册了实体,但是当急切地加载父实体(使用include)时,它仍然尝试在同一数据库中定位依赖实体 我做错什么了吗 在以下代码中,已删除与问题无关的所有其他对象 家长: [Table("tblEventsDates")] public class Session

我是EF7新手,使用1.0.0-rc1-final 使用数据库优先设计(数据库已经存在,因此必须使用它)

我有2个实体-父实体在一个数据库中,从属子实体在同一服务器实例上的另一个数据库中

我有两个数据库上下文,每个数据库分别有一个,并相应地注册了实体,但是当急切地加载父实体(使用include)时,它仍然尝试在同一数据库中定位依赖实体

我做错什么了吗

在以下代码中,已删除与问题无关的所有其他对象

家长:

[Table("tblEventsDates")]
public class Session
{
    [Column("EventDateID")]
    public int SessionId { get; set; }
    [Column("EventDateName")]
    public string Name { get; set; }               
    [Column("EventDate")]
    public DateTime SessionDate { get; set; }        
    [Column("EventDateTime")]
    public DateTime SessionTime { get; set; }
    [Column("EventDateMinutes")]
    public decimal? SessionDurationInMinutes { get; set; }
    [Column("EventDateArrival")]
    public DateTime? ArrivalTime { get; set; }
    [Column("EventCapacity")]
    public int SessionCapacity { get; set; }

    //navigation properties        
    [JsonIgnore]        
    public int EventId { get; set; }
    [JsonIgnore]        
    public Event Event { get; set; }
    public HardTicketRange HardTicketRange {get;set;}

}
从属实体:

    [Table("tblhardTicketRanges")]
    public class HardTicketRange {
        public int HardTicketRangeId { get; set; }
        public int Start { get; set; }
        [Column("Finish")]
        public int End { get; set; }
        public string Description { get; set; }

        //navigation properties`enter code here`
        public int SessionId { get; set; }
        public Session Session { get; set; }

    }
第二个DbContext:

public class TicketingDataDbContext : DbContext {
    protected override void OnModelCreating(ModelBuilder modelBuilder) {
        modelBuilder.Entity<HardTicketRange>()
            .HasOne(e => e.Session)
            .WithOne(e => e.HardTicketRange);            

        modelBuilder.Entity<HardTicketRange>(entity => {
            entity.HasKey(e => e.HardTicketRangeId);
        });          

    }

    public virtual DbSet<HardTicketRange> HardTicketRanges { get; set; }
}
由EF 7生成的SQL-这是不正确的,因为这两个表存在于不同的数据库中

SELECT [e].[EventDateID], [e].[EventDateArrival], [e].[EventId], [e].

[EventDateName], [e].[EventCapacity], [e].[EventDate], [e].[EventDateMinutes], [e].[EventDateTime], [t].[HardTicketRangeId], [t].[Description], [t].[Finish], [t].[SessionId], [t].[Start]
FROM [tblEventsDates] AS [e]
LEFT JOIN [tblhardTicketRanges] AS [t] ON [t].[SessionId] = [e].[EventDateID]
WHERE [e].[EventId] = @__eventId_0
ORDER BY [e].[EventDate], [e].[EventDateTime] DESC

我不确定任何版本的实体框架是否支持跨数据库关系。你需要分别使用这两个上下文并自己合并结果。是的,我想你是对的,如果我真的需要这样的东西,我可能必须基于查询这两个源的视图创建一个视图和一个数据模型
var sessions = from s in _cxt.Sessions.Include(e=>e.HardTicketRange)
                       where s.EventId == eventId                                                      
                       orderby s.SessionDate, s.SessionTime  descending
                       select s;
SELECT [e].[EventDateID], [e].[EventDateArrival], [e].[EventId], [e].

[EventDateName], [e].[EventCapacity], [e].[EventDate], [e].[EventDateMinutes], [e].[EventDateTime], [t].[HardTicketRangeId], [t].[Description], [t].[Finish], [t].[SessionId], [t].[Start]
FROM [tblEventsDates] AS [e]
LEFT JOIN [tblhardTicketRanges] AS [t] ON [t].[SessionId] = [e].[EventDateID]
WHERE [e].[EventId] = @__eventId_0
ORDER BY [e].[EventDate], [e].[EventDateTime] DESC