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; }
}

我的问题是,当我稍后尝试创建一个新团队(有一个用户)时,在保存上下文时会遇到以下问题。

调用 System.ComponentModel.DataAnnotations.MinLengthAttribute.IsValid 时,在验证“用户”期间引发了意外异常。有关详细信息,请参阅内部异常。

内部异常如下:

{“无法将“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 回答