我知道实体框架在发布到
stackoverflow的同一个服务器上进行跨数据库查询有很多问题.大多数情况下,答案似乎是“不”,而这个链接是从
way back in 2008 is referenced.然而,实体框架一直在变化,与CTP5出来,我想知道答案是否仍然是一样的 – 你不能这样做,或者你可以这样做,如果你手动编辑edmx文件,或者你必须使用视图.单独的这个功能是我仍然绑定到Linq到sql的原因,因为我们在同一台服务器上有多个sql Server 2008数据库,需要在它们之间进行查询.使用数百个select *视图来污染我们的数据库不是一个选项,并且通过代码优先开发,我没有可编辑的edmx文件.我正在玩酒吧数据库,看看我能不能去某个地方,但我被困住了.有什么建议么?
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! } } }