C# 如何首先在代码中定义0..1对多关系

C# 如何首先在代码中定义0..1对多关系,c#,ef-code-first,entity-relationship,C#,Ef Code First,Entity Relationship,最近我在读ado.net团队博客的文章,当我发现如何创建一对一关系、一对多关系和多对多关系时。但是,有没有办法创建0..1对多关系 class TestA { public int id { get; set; } public string name { get; set; } [Timestamp] public byte[] stamp { get; set; } public TestB TB { get; set; } } cla

最近我在读ado.net团队博客的文章,当我发现如何创建一对一关系、一对多关系和多对多关系时。但是,有没有办法创建0..1对多关系

class TestA
{
    public int id { get; set; }
    public string name { get; set; }
    [Timestamp]
    public byte[] stamp { get; set; }       
    public TestB TB { get; set; }
}

class TestB
{
    public int id { get; set; }
    public string name { get; set; }
    [Timestamp]
    public byte[] stamp { get; set; }
    public ICollection<TestA> TA { get; set; }
}

class myContext : DbContext
{
    public DbSet<TestA> players { get; set; }
    public DbSet<TestB> teams { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<TestB>().HasOptional<TestA>(a => a);
    }
}
类测试
{
公共int id{get;set;}
公共字符串名称{get;set;}
[时间戳]
公共字节[]戳{get;set;}
公共TestB TB{get;set;}
}
类TestB
{
公共int id{get;set;}
公共字符串名称{get;set;}
[时间戳]
公共字节[]戳{get;set;}
公共ICollection TA{get;set;}
}
类myContext:DbContext
{
公共DbSet播放器{get;set;}
公共DbSet团队{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().has可选(a=>a);
}
}

太迟了

你就快到了。尝试如下映射它

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<TestA>().HasOptional(a => a.TB)
       .WithMany(b => b.TA);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().has可选(a=>a.TB)
.有许多(b=>b.TA);
}
关于地图的文章

  • 这个系列的其他部分也很好

向我们展示你迄今为止所做的尝试。嗨@leppie,我编辑了这篇文章,但它抛出了一个例外嗨@Eranga,你告诉我如何获得它,但我仍然不知道我为什么要写它。你能给我提供一些关于创建实体间关系的信息吗?任何有用的链接都可以。提前谢谢!