具有相同实体类型的一对一关系-FluentAPI

时间:2019-12-18 12:28:02

标签: c# entity-framework ef-fluent-api

仅需担心如何为与同一实体的一对一关系配置EF,这对我来说很少见。这是我的要求,我对如何建模表示怀疑。

这是场景,

一个患者可以有一个伴侣,而一个伴侣只能属于一个患者。伴侣也是病人。

我有这样的模特;

 public class Patient
 {
    public long Id { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public EGender Gender { get; set; }

    public DateTime DateOfBirth { get; set; }

    public DateTime CreatedAt { get; set; }

    public long PartnerId { get; set; }

    public Patient Partner { get; set; }

    public EPatientType PatientType { get; set; }
 }

我的FluentAPI配置是这样的,但不确定我是否正确

      builder.HasOne(p => p.Partner)
            .WithOne(p => p.Partner) // Not sure what to do here
            .IsRequired(false)
            .HasForeignKey<Patient>(p => p.PartnerId)
            .OnDelete(DeleteBehavior.Restrict);

任何对如何在fluentAPI上建模或如何进行的想法都表示赞赏...

2 个答案:

答案 0 :(得分:0)

[Index(“ IX_UniqueParentId”,1,IsUnique = true)]

public long? PartnerId { get; set; }

答案 1 :(得分:0)

尝试使用:

render() {
        return (
            <div className="pokemon__about">
                {this.props.pokemonValue.map((value,index)=>{
                   let totalMoves = value.moves.length;
                    return(
                        <div className="pokemon__about__wrapper" key={index}>
                            {this.props.pokemonId == value.id ?
                                <div className="pokemon__about__inner" key={index}>
                                    <AboutImage 
                                        pockemonImg={this.props.pockemonImg}
                                    />
                                    <AboutName
                                        pockemonName={value.name}
                                    />
                                    <div className="pokemon__about__table">
                                            <AboutPokemonTypes 
                                                pokemonTypes={value.types}
                                                />
                                                <table>
                                            <AboutPokemonWeight 
                                                pockemonWeight={value.weight}
                                            />
                                            <AboutPokemonMoves 
                                                totalMoves={totalMoves}
                                            />
                                        </table>
                                    </div>
                                </div>
                                :
                                null
                            }
                        </div>
                    )
                })}
            </div>
        );

对我有用。