0

User と Image テーブルの 2 つのクラスがあります。

public class User
{
    public Guid? ImageId {get; set;}
    public Image Image {get; set;}
}

public class Image
{
    public Guid? UserId {get; set;}
    public User User {get; set;}
}

ユーザーと画像の両方が他のエンティティーなしで単独で存在できますが、関係がある場合、ユーザーは 1 つの画像にのみ関連付けることができ、画像は null でない場合にのみユーザーを持つことができます。これをどのようにマッピングしますか?現在私は持っています:

public UserMapping()
    {            
        HasOptional(x => x.ProfileImage).WithOptionalPrincipal(x => 
        x.User).Map(x => x.MapKey("UserId"));
    }

他の回答から、関係を2回マップしないと述べられているため、ImageMappingには何もありません。ただし、移行ファイルは最終的に Image テーブルに追加の User_Id プロパティを生成します。

CreateTable(
            "dbo.Images",
            c => new
                {
                    Id = c.Guid(nullable: false),
                    UserId = c.Guid(),
                    User_Id = c.Guid(),
                })
            .PrimaryKey(t => t.Id)
            .ForeignKey("dbo.Users", t => t.User_Id)
            .Index(t => t.User_Id);

これは間違っています。マッピングを適切に行うにはどうすればよいですか?

編集:私もこれを見つけましたhttp://stackoverflow.com/questions/21082085/entity-framework-optional-1-to-1-relation-on-both-ends と主張する元の質問に示されていることを試しました動作しますが、動作しません。それでも User_Id が作成されます。

4

1 に答える 1