属性“私有”不是字符串或字节数组。只能为 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 数组属性配置长度的主要内容,如果未能解决你的问题,请参考以下文章

确定字节数组是不是包含 ANSI 或 Unicode 字符串?

jQuery - 检查数组是不是为空或具有属性

android 字符串转byte数组

如何在Java中将二维布尔数组转换为一维字节数组?

字节流 字符流 输入流 输出流

字节流 字符流 输入流 输出流