EntityFrameworkのCodeFirstアプローチを使用すると、特定の機能を取得するのに問題があります。Fluent APIを使用して、ユーザーのエージェンシープロパティが、プリンシパルまたはエージェントにユーザーとして彼が含まれているすべてのエージェンシーエンティティをロードすることを達成しようとしました。
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public IList<Agency> Agencies { get; set; }
}
public class Agency
{
public int Id { get; set; }
[Required]
public User Principal { get; set; }
[Required]
public User Agent { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>().HasMany(u => u.Agencies).WithRequired(a => a.Agent).WillCascadeOnDelete(true);
modelBuilder.Entity<User>().HasMany(u => u.Agencies).WithRequired(a => a.Principal).WillCascadeOnDelete(true);
}
何らかの理由で、プリンシパルが所有ユーザーに設定されているエージェンシーのみがロードされています。私が求めている機能を代替的に達成できる理由や方法はありますか?
2つの外部キーによって参照される単一のコレクションを持つことはできません。2つのコレクションを作成し、それぞれを1つの外部キーにマップする必要があります。
フェッチを簡単にするために単一のコレクションが必要な場合は、次のようにすることができます。
public IList<Agency> Agencies1 { get; set; }
public IList<Agency> Agencies2 { get; set; }
[NotMapped]
public string AllAgencies
{
get
{
return Agencies1.Concat(Agencies2).ToList();
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加