SQL Server用にService Stack ORMLiteを使用し始めましたが、いくつか考え出すことができませんでした。私は私が達成しようとしているものを、一例でお見せしましょう:ServiceStack OrmLite多対1リレーションシップ
私は2つのテーブルがある - ユーザーとロール
public partial class Users : IHasId<int>
{
[AutoIncrement]
public int Id { get; set; }
[Required]
public string Email { get; set; }
[Required]
public string Password { get; set; }
[References(typeof(Roles))]
[Required]
public int RolesId { get; set; }
}
public partial class Roles : IHasId<int>
{
[AutoIncrement]
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
ユーザーのみ1役割に属することができます。しかし、多くのユーザーも同じ役割の一部になる可能性があります。例:
User 1 - Role 1
User 2 - Role 1
User 3 - Role 2
私はこのコード
db.LoadSelect<Users>(x => x.Id == 1);
を実行すると、私はユーザーが細かいオブジェクトを取得します。クエリでRolesオブジェクトを返すようにしたいのですが(私はRolesテーブルを別々に照会するのではなく)、どうすればいいですか?私はここで何が欠けていますか?私は "どのくらいのユーザーがXの役割を持っていますか?" (典型的な1 2このような多くの関係:ServiceStack OrmLite mapping with references not working)、代わりに私は "このユーザーの役割は何ですか?"ユーザーテーブルへのロールのプロパティを追加することにより、self references使用OrmLiteでサポートされている1の関係、例えば:
public partial class Users : IHasId<int>
{
[AutoIncrement]
public int Id { get; set; }
[Required]
public string Email { get; set; }
[Required]
public string Password { get; set; }
[References(typeof(Roles))]
[Required]
public int RolesId { get; set; }
[Reference]
public Roles Roles { get; set; }
}
public partial class Roles : IHasId<int>
{
[AutoIncrement]
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
その後、取り込まれます
うわー!これは簡単でしたか?ありがとう、トン! – Ubaid