0

我正在尝试做与之前的答案类似的事情: 如何使用实体框架 4 代码优先 (POCO) 声明一对一关系

问题是,我对此很陌生,我首先使用 Entity Framework 5 代码并且HasConstraint不再存在,更不用说我不擅长 lamda。我想知道是否有人可以帮助扩展这一点,以便我可以有效轻松地将 User 类映射到 Profile 类?我需要知道如何为配置文件和模型构建器执行此操作

每个用户都有一个配置文件

另外,另一个快速的问题,假设配置文件模型中有列表,我如何将它们有效地放在模型构建器和配置文件中?

谢谢

4

2 回答 2

0

例如

public class User
{
    public int Id { get; set; }
    public string Username { get; set; }
    public Profile Profile { get; set; }
    // public int ProfileId { get; set; }
}

public class Profile
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string PostalCode { get; set; }
}
// ...
modelBuilder.Entity<User>()
    .HasOptional(x => x.Profile)
    .WithRequired();

ProfileId没用,FK 在“围栏的另一边”(在 中Profile)。
(这是最有意义的国际海事组织)

如果您确实需要一个Id输入User(例如,在添加时能够Profile仅通过其 ID填写User- 如果没有真正使用一对一 - 在您创建配置文件和用户时),那么您可以反转...

modelBuilder.Entity<User>()
    .HasRequired(x => x.Profile)
    .WithOptional();

...而您ProfileId实际上在Id(pk -> pk) 中。

于 2013-04-09T13:19:05.670 回答
0

该解决方案对我有用

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
 modelBuilder.Entity<ApplicationUser>(entity =>
            {
                entity.HasKey(e => e.Id);
                entity.Property(e => e.Id).HasMaxLength(450);
                entity.HasOne(d => d.Profile).WithOne(p => p.User);
            });


 modelBuilder.Entity<UserProfile>(entity =>
            {
                entity.HasKey(e => e.Id);
                entity.Property(e => e.Id).HasMaxLength(450);
                entity.Property(e => e.Type)
                    .HasMaxLength(10)
                    .HasColumnType("nchar");
                entity.HasOne(d => d.User).WithOne(p => p.Profile);
            });

 }
于 2016-02-16T11:05:06.383 回答