3

これは私が持っているデータモデルです:

public class Team
{
    [Key]
    public int Id { get; set;} 
    [Required]
    public string Name { get; set; }

    [MinLength(1)]
    public virtual ICollection<User> Users { get; set; }
}

私の問題は、後で新しいチーム(1人のユーザーがいる)を作成しようとすると、コンテキストが保存されているときに次の問題が発生することです。

System.ComponentModel.DataAnnotations.MinLengthAttribute.IsValidを呼び出すときに、「Users」の検証中に予期しない例外がスローされました。詳細については、内部例外を参照してください。

内部例外は次のとおりです。

{"タイプ'System.Collections.Generic.List`1[MyNameSpace.Model.User]'のオブジェクトをタイプ'System.Array'にキャストできません。"}

これが実際の保存のコードです(今のところコントローラーにあります):

        if (ModelState.IsValid)
        {
            team.Users = new List<User>();
            team.Users.Add(CurrentUser);//CurrentUser is a property that gives me the currently active User (MyNamespace.Model.User).
            DB.Teams.Add(team);//DB is a DbContext object that holds DbSets of all my models
            DB.SaveChanges();
            return RedirectToAction("Index");
        }

それで、ここで何が起こっているのですか?私は何か間違ったことをしていますか、それとも何か他のことが起こっていますか?

4

1 に答える 1

5

達成しようとしていることに MinLength 属性を使用できるとは思いません。 MinLength属性の msdn ページは次のとおりです。説明に基づくと、 「プロパティで許可される文字列データの配列の最小長を指定します。」 ご覧のとおり、文字列データの配列に対してのみ使用できます。シナリオを処理するには、独自のカスタム ValidationAttribute を作成する必要がある場合があります。

于 2012-07-19T17:56:59.310 に答える