【发布时间】:2012-11-30 17:07:49
【问题描述】:
我在两个 POCO 对象上应用多个关系(或可能是外键)时遇到问题。我有第一个多对多关系,当创建数据库时,它会创建关系所需的三个表(Projects、Users 和 ProjectsUsers)。
到目前为止的代码:
public class Project
{
public int ProjectId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? CompletionDate { get; set; }
public bool Deleted { get; set; }
public ICollection<User> Users { get; set; }
}
public class User
{
public User()
{
Name = new Name();
}
public int UserId { get; set; }
public string LoginId { get; set; }
public string Password { get; set; }
public Name Name { get; set; }
public ICollection<Project> ManagedProjects { get; set; }
}
public class ProjectConfiguration : EntityTypeConfiguration<Project>
{
public ProjectConfiguration()
{
HasMany(x => x.Users)
.WithMany(x => x.ManagedProjects);
}
}
public UserConfiguration()
{
HasMany(x => x.ManagedProjects)
.WithMany(x => x.Users);
}
现在我想添加一个可选的 Project.ManagingUser -> User 的一对一关系。但是,我似乎无法弄清楚如何在配置中指出这一点。
我认为需要的代码:
public class Project
{
public int ProjectId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? CompletionDate { get; set; }
public bool Deleted { get; set; }
public int? ManagingUserId { get; set; }
public User ManagingUser { get; set; }
public ICollection<User> Users { get; set; }
}
我认为用户对象不需要更改。
这显示了我最近一次映射新关系的尝试:
public ProjectConfiguration()
{
HasMany(p => p.Users)
.WithMany(u => u.Projects);
this.HasOptional(p => p.ManagingUser)
.WithOptionalDependent()
.Map(m=>m.MapKey("ManagingUserId"))
.WillCascadeOnDelete(false);
}
创建数据库时发生了什么,我现在只有两个表(项目和用户)。看起来它只是试图建立一对一的关系。
谁能告诉我我错过了什么?
Richard 我没有更改 UserConfiguration,下面是 DbContext:
public class MyDbContext : DbContext
{
public MyDbContext() : base(Properties.Settings.Default.ConnectionString)
{
}
public DbSet<User> Users { get; set; }
public DbSet<Project> Projects { get; set; }
}
【问题讨论】:
标签: entity-framework code-first poco entity-framework-5