代码优先的Entity Framework是否可以与同一框上的SQL Server DB进行跨数据库查询?

问题描述

| 我知道关于Entity Framework在发布到stackoverflow的同一台服务器上进行跨数据库查询的问题很多。大多数情况下,答案似乎是“否”,此链接可追溯到2008年。但是,Entity Framework一直在变化,并且随着CTP5的发布,我想知道答案是否仍然是相同的-您无法做到这一点,或者您可以手动编辑edmx文件来做到这一点,或者您必须使用视图。仅此功能就是我仍然与Linq-to-SQL绑定的原因,因为我们在同一服务器上有多个SQL Server 2008数据库,并且需要在它们之间进行查询。用数百个“ 0”视图污染数据库是不可行的,并且通过代码优先开发,我没有edmx文件可编辑。我在玩pubs数据库,看看是否可以到达某个地方,但是我被卡住了。有什么建议么?
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration;

namespace DbSchema {
    public class Employee {
        [Key]
        public string ID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public short JobID { get; set; }
        public Job Job { get; set; }
    }

    public class Job {
        [Key]
        public short ID { get; set; }
        public string Description { get; set; }
    }

    public class PubsRepository : DbContext {
        public DbSet<Employee> Employee { get; set; }
        public DbSet<Job> Job { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder) {
            // employee
            var eeMap = modelBuilder.Entity<Employee>();
            eeMap.ToTable(\"employee\",\"dbo\"); // <-- how do I reference another database?
            eeMap.Property(e => e.ID).HasColumnName(\"emp_id\");
            eeMap.Property(e => e.FirstName).HasColumnName(\"fname\");
            eeMap.Property(e => e.LastName).HasColumnName(\"lname\");
            eeMap.Property(e => e.JobID).HasColumnName(\"job_id\");

            // job
            var jobMap = modelBuilder.Entity<Job>();
            jobMap.Property(j => j.ID).HasColumnName(\"job_id\");
            jobMap.Property(j => j.Description).HasColumnName(\"job_desc\");
        }

        public List<Employee> GetManagers() {
            var qry = this.Employee.Where(x => x.Job.Description.Contains(\"manager\"));
            Debug.WriteLine(qry.ToString());
            return qry.ToList(); // <-- error here when referencing another database!
        }
    }
}
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)