【发布时间】:2015-09-18 21:19:25
【问题描述】:
我有两个对象(UserProfile 和 Login)驻留在不同的程序集中,我必须在 SQL Server 中创建它们之间的关系(我不关心 DbContext 关系,但我想确保数据库引用各自表之间的完整性)。
最简单的方法是更新数据库(我首先使用代码)并运行更改表来创建关系,但是我认为这种方法有点脏(即使在 Up 方法中使用 SqlResource)。
我尝试使用 HasOptional 和 Map 方法创建此关系但未成功(当我尝试“HasOptional(a => a.IdUsuario)...”之类的方法时,流利的 api 表示 ProfileId 不是引用类型)。
// UserContext's Classes (Assembly 'A')
public class UserProfile
{
public int Id { get; set; } // PK
// some properties omitted
}
public class UserContext : DbContext
{
DbSet<UserProfile> UsersProfiles { get; set; }
}
// SecurityContext's Classes (Assembly 'B')
public class Login
{
public int Id { get; set; }
public string UserName { get; set; }
public int ProfileId { get; set; } // UserProfile's FK
}
public class SecurityContext : DbContext
{
DbSet<Login> Logins { get; set; }
}
我尝试引用这两个类,包括导航属性并使用“modelBuilder.Ignore”来选择我想要在每个上下文中真正同步的类,但这会导致循环引用问题。
我收到消息“导航属性 'UserProfile' 不是在类型 'Login' 上声明的属性。验证它没有明确地从模型中排除并且它是一个有效的导航属性。”如果尝试创建假类只是为了映射目的。
我错过了什么吗?
【问题讨论】:
标签: c# entity-framework entity-framework-6