Daniel, eu consegui realizar o relacionamento entre os contextos, eu estava a usar uma definição errada no modelo.
Contudo, eu tive outro problema. O modelo do meu Contexto1 é criado no meu Context2.
Model Contexto1, que é o padrão do Entity.
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public System.Data.Entity.DbSet<WCDA.Models.ConfigModels.B_CONFIG_TipoCliente> B_CONFIG_TipoCliente { get; set; }
public System.Data.Entity.DbSet<WCDA.Models.B_CONFIG_Cliente> B_CONFIG_Cliente { get; set; }
public System.Data.Entity.DbSet<WCDA.Models.ConfigModels.B_CONFIG_TipoBloco> B_CONFIG_TipoBloco { get; set; }
}
O Model do Contexto1 que estou tentando relacionar com o Contexto2 é o "B_CONFIG_Cliente".
No meu modelo ele cria a coleção para o modelo do Contexto2 "B_CAD_Cliente", a qual eu chamo de "_Cliente"
public virtual ICollection<B_CAD_Cliente> _Cliente { get; set; }
E meu modelo do Context2 segue com o código abaixo:
namespace WCDA.Models
{
public class B_CAD_Cliente
{
[Key]
public int CLILOCAL_ID { get; set; }
public int CLI_ID { get; set; }
public virtual B_CONFIG_Cliente _Cliente { get; set; }
}
}
Recebo minha coleção enviada pelo Contexto1. O Contexto2 é definido desta forma:
public class WCDAContext : DbContext
{
public WCDAContext() : base("name=WCDAContext")
{
}
public System.Data.Entity.DbSet<WCDA.Models.B_CAD_Cliente> B_CAD_Cliente { get; set; }
}
Fiz as alterações no Controller para que ele chame o contexto correto no momento do select da Index, e deu certinho.
No Create também ele consegue pegar o ID do Contexto1 sem problemas. Contudo, quando mando adicionar, ele dá erro de chave estrangeira e cria a tabela "B_CONFIG_Cliente do meu Context1 na base do Contexto2.
Alguma coisa que devo fazer no Controller?
Meu Controller está abaixo, chamei de
private WCDAContext db = new WCDAContext(); //Contexto2
private ApplicationDbContext dbG = new ApplicationDbContext(); //Contexto1
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "CLILOCAL_ID,CLI_ID")] B_CAD_Cliente b_CAD_Cliente)
{
if (ModelState.IsValid)
{
db.B_CAD_Cliente.Add(b_CAD_Cliente);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.CLI_ID = new SelectList(dbG.B_CONFIG_Cliente, "CLI_ID", "CLI_RSOCIAL", b_CAD_Cliente.CLI_ID);
return View(b_CAD_Cliente);
}