UserクラスとOrganizationクラスがあります。彼らはこのように見えます
public class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<Organization> Organizations { get; set; }
}
public class Organization : EntityBase
{
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<User> Users { get; set; }
}
また、どちらもEntityBaseクラスから継承して、Idや作成/更新されたトラッキングなどの一般的なフィールドを取得します。
public abstract class EntityBase
{
public int Id { get; set; }
public DateTime Created { get; set; }
public virtual User CreatedBy { get; set; }
public DateTime Updated { get; set; }
public virtual User UpdatedBy { get; set; }
}
両方のICollectionプロパティで示されているように、多対多の関係が必要です。ただし、データベースが自動生成されると、テーブルに誤った外部キーが追加されます
CreatedByとUpdatedByをUserプロパティではなく文字列に変更すると、探していた結合テーブルが表示されます。
これはEntityFrameworkが単に混乱している問題であり、流暢なマッピングを使用して多対多の構成を提供する必要がありますか、それとも何か間違ったことをしましたか?