gpt4 book ai didi

c# - Entity Framework : One to zero relationship

转载 作者:行者123 更新时间:2023-11-30 15:20:10 27 4
gpt4 key购买 nike

我有

public class MyUser : IdentityUser<int,MyLogin,MyUserRole,MyUserClaim>
{
public virtual MyUserProfile Profile { get; set; }
}

public class MyUserProfile
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}

我的 IdentityUser 实现具有 INT PK。我想在 MyUser 中有一个导航属性,而在另一侧没有。我更喜欢数据注释。是否可以使用 IdentityUser PK 进行导航? (英孚 6.1.3 版)

更新 #1。从属类型 - MyUserProfile。并且它不必包含 MyUser 类型的导航属性。

最佳答案

我想提一下我的测试与@RudiVisser 关于创建的数据库的回答相比有一点不同。

public class MyUser
{
public int Id { get; set; }

public virtual MyUserProfile Profile { get; set; }
}

public class MyUserProfile
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}


class MyContext : DbContext
{
public DbSet<MyUser> Users { get; set; }
public DbSet<MyUserProfile> Profiles { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<MyUser>()
.HasOptional(x => x.Profile)
.WithRequired();
}
}

生成的迁移

public override void Up()
{
CreateTable(
"dbo.MyUserProfiles",
c => new
{
Id = c.Int(nullable: false),
FirstName = c.String(),
LastName = c.String(),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.MyUsers", t => t.Id)
.Index(t => t.Id);

CreateTable(
"dbo.MyUsers",
c => new
{
Id = c.Int(nullable: false, identity: true),
})
.PrimaryKey(t => t.Id);
}

与他的回答相反,我没有观察到单独的 MyUser_Id 外键的创建。 MyUserProfiles.Id 已正确配置为主键和外键。所以任何想使用这样配置的人都应该尝试一下,但要仔细观察生成的迁移代码。

我的工具集:Visual Studio 2013、EntityFramework 6.1.3 nuget 包。

关于c# - Entity Framework : One to zero relationship,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40635266/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com