最初にEF5コードのテーブル作成に問題があります。2つのケースとその出力を示します。それらの違いと、目標を達成するためにどのように成功できるかを知りたいのです。
ケース1
public class User{
public int ID { get; set; }
public string Name { get; set; }
public ICollection<UserMessage> Messages { get; set; }
}
public class UserMessage{
public int ID { get; set; }
public string Message { get; set; }
public User CreatedBy { get; set; }
public ICollection<User> PermittedUsers {get; set;}
}
この場合、エンティティフレームワークは、UserのUserMessage_IDとUserMessageのCreatedBy_IDでのみ相互にバインドするUserクラスとUserMessageクラスのみを生成します。
私が興味を持っている問題はここにあります。新しいメッセージを作成するたびに、EF5は許可されたユーザーをどのように認識しますか?許可されたユーザーごとに同じメッセージを複製しますか?または何?
ケース2
public class User{
public int ID { get; set; }
public string Name { get; set; }
public ICollection<UserMessage> Messages { get; set; }
}
public class UserMessage{
public int ID { get; set; }
public string Message { get; set; }
public ICollection<User> PermittedUsers {get; set;}
}
この場合、UserMessageエンティティのCreatedByのみを削除しました。これで、EF5はUser、UserMessage、UserMessageUsersという名前の3つのテーブルを生成します。UserMessageとUserの間のリンクは、許可されたユーザーを簡単に管理できるようにUserMessageUsersを介して行われます。
ケース2を分割せずに、CreatedByプロパティをUserMessageに追加するにはどうすればよいですか?