2011-10-19 3 views
0

두 개의 DbContext가 있다고 가정 해 봅시다. 하나는 품종이고 다른 하나는 개가 들어 있습니다.두 DbContext 사이의 공유

public class Dog { 
    public Breed Breed { get; set; } 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
} 

public class Breed { 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
} 

public class MainUnitOfWork : DbContext 
{ 
    public MainUnitOfWork(): base("MainDb") { } 
    public IDbSet<Breed> Breeds { get; set; } 
} 

public class NextUnitOfWork : DbContext 
{ 
    public NextUnitOfWork() : base("NextDb") { } 
    public IDbSet<Dog> Dogs { get; set; } 
} 

이제 새 개를 삽입하려고합니다.

var next = new NextUnitOfWork(); 

var dog = new Dog 
    { Id = Guid.NewGuid(), Name = "Fido", 
     Breed = new Breed { Id = Guid.NewGuid(), Name = "Rotweiler" } }; 

next.Dogs.Add(dog); 
next.SaveChanges(); 

이제 Dogs와 Breeds를위한 NextDb에서 두 개의 테이블을 얻습니다. EF는 MainUnitOfWork에서 선언 되었기 때문에 Breed가 실제로 MainDb에 속해 있다는 것을 알았 으면합니다. 음, 내가 원하는 것을하기 위해 EF를 굽히려면 어떻게해야합니까?

답변

0

EF가이를 수행하는 방법을 찾았더라도 다른 데이터베이스의 테이블에 외래 키를 정의 할 방법이 없으므로 관계형 데이터베이스에서이를 표현할 수 없습니다. 적어도 주류 관계형 데이터베이스 서버에는 없습니다.

개 테이블은 일대일 관계를 나타 내기 위해 개 (breed)에 외래 키가 필요합니다.

0

EF는 마법이 아닙니다. NextUnitOfWorkMainUnitOfWork 클래스 간에는 어떤 관계도 설정되지 않습니다. 그리고 어쨌든 그들을 섞을 수는 없습니다.