属性“私有”不是字符串或字节数组。只能为 String 和 Byte 数组属性配置长度
Posted
技术标签:
【中文标题】属性“私有”不是字符串或字节数组。只能为 String 和 Byte 数组属性配置长度【英文标题】:The property 'Private' is not a String or Byte array. Length can only be configured for String and Byte array properties 【发布时间】:2015-05-27 05:39:56 【问题描述】:我尝试按照 http://techbrij.com/generic-repository-unit-of-work-entity-framework-unit-testing-asp-net-mvc 的架构设计来构建一个小型网站,但我收到此错误“属性 'Private' 不是字符串或字节数组。长度只能配置为字符串和字节数组属性。 "当我打电话时
User user = _userService.GetByName(username); from AccountController.cs
这里是调用栈:
> Kad.Repository.dll!Kad.Repository.GenericRepository<Kad.Model.Category>.FindBy(System.Linq.Expressions.Expression<System.Func<Kad.Model.Category,bool>> predicate) Line 32 C#
> Kad.Repository.dll!Kad.Repository.CategoryRepository.GetById(int id) Line 17 C#
> Kad.Service.dll!Kad.Service.CategoryService.GetById(int Id) Line 25 C#
> Kad.dll!Kad.Controllers.AccountController.Login(Kad.Models.LoginViewModel model, string returnUrl) Line 111 C#
属性“Private”不是字符串或字节数组。只能为 String 和 Byte 数组属性配置长度。
说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.InvalidOperationException:属性“Private”不是字符串或字节数组。只能为 String 和 Byte 数组属性配置长度。
来源错误: 第 32 行:IEnumerable 查询 = _dbset.Where(predicate).AsEnumerable(); 第 33 行:返回查询;
请告诉我代码发生了什么?我哪里配置错了!
【问题讨论】:
听起来像是语法错误。贴出程序失败的那行代码。 【参考方案1】:谢谢,我发现我为 TableCate 实体的属性设置了 MaxLength。我删除了它。现在效果很好!
[Required]
//[MaxLength(1)]
public int Private get; set;
【讨论】:
【参考方案2】:我从另一个类复制了一个属性并将名称和类型更改为布尔值,因此 StringLength 注释不再有效:
[Required]
//[StringLength(50)]
public bool IsActive get; set;
【讨论】:
以上是关于属性“私有”不是字符串或字节数组。只能为 String 和 Byte 数组属性配置长度的主要内容,如果未能解决你的问题,请参考以下文章