属性“Private”不是String或Byte数组。只能为String和Byte数组属性配置Length

时间:2015-03-24 01:53:03

标签: mysql entity-framework-6.1

我尝试按照http://techbrij.com/generic-repository-unit-of-work-entity-framework-unit-testing-asp-net-mvc的架构设计构建一个小型网站,但我收到此错误“属性'Private'不是String或Byte数组。长度只能配置为String和Byte数组属性“。当我打电话

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数组。只能为String和Byte数组属性配置Length。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidOperationException:属性“Private”不是String或Byte数组。只能为String和Byte数组属性配置Length。

来源错误: 第32行:IEnumerable query = _dbset.Where(谓词).AsEnumerable(); 第33行:返回查询;

请告诉我代码发生了什么?我配置错误的地方!

2 个答案:

答案 0 :(得分:7)

谢谢,我发现我为Class TableCate Entity的属性设置了MaxLength。我删除了它。它现在运作良好!

[Required] 
//[MaxLength(1)] 
public int Private { get; set; }

答案 1 :(得分:0)

我从另一个类复制了一个属性,并将Name和类型更改为boolean,因此StringLength Annotation不再有效:

[Required]
//[StringLength(50)]
public bool IsActive { get; set; }