C# 类型';System.Int32';需要表示枚举类型

C# 类型';System.Int32';需要表示枚举类型,c#,C#,我正在尝试切换列值。我正在使用实体框架数据库连接 public static void yayinDegistir(int id) { using (vt dc = new vt()) { Testler d = dc.testler.FirstOrDefault(t => t.testId.Equals(id)); if (d != null) { d.yayinda = !d.yayinda; //

我正在尝试切换列值。我正在使用实体框架数据库连接

public static void yayinDegistir(int id)
{
    using (vt dc = new vt())
    {
        Testler d = dc.testler.FirstOrDefault(t => t.testId.Equals(id));
        if (d != null)
        {
            d.yayinda = !d.yayinda; //bool value to toggle
            dc.SaveChanges(); //error
        }
    }
}
错误是

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: The type 'System.Int32' needs to represent an enumeration type.
Testler类

public class Testler
{
    [Key]
    [ScaffoldColumn(false)]
    public virtual int testId { get; set; }

    [DataType(DataType.Text)]
    [Display(Name = "Test Adı")]
    public virtual string testAdi { get; set; }

    [DataType(DataType.MultilineText)]
    public virtual string aciklama { get; set; }

    [DataType(DataType.Text)]
    [EnumDataType(typeof(int), ErrorMessage = "{0} mutlaka sayı olmalıdır!")]
    public virtual int testSuresi { get; set; }

    public virtual bool cokluSecim { get; set; }

    [DataType(DataType.MultilineText)]
    public virtual string oneriler { get; set; }

    public virtual bool yayinda { get; set; }

    public virtual ICollection<Sorular> sorular { get; set; }
}
值)+40216 System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(对象 值,ValidationContext ValidationContext)+115 System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(对象 值,ValidationContext ValidationContext)+29 System.Data.Entity.Internal.Validation.ValidationAttributeValidator.Validate(EntityValidationContext entityValidationContext,InternalMemberEntry属性)+100

援引 System.ComponentModel.DataAnnotations.EnumDataTypeAttribute.IsValid。 有关详细信息,请参见内部异常。] System.Data.Entity.Internal.Validation.ValidationAttributeValidator.Validate(EntityValidationContext entityValidationContext,InternalMemberEntry属性)+170 System.Data.Entity.Internal.Validation.PropertyValidator.Validate(EntityValidationContext entityValidationContext,InternalMemberEntry属性)+108 System.Data.Entity.Internal.Validation.EntityValidator.ValidateProperties(EntityValidationContext entityValidationContext,InternalPropertyEntry父属性,列表
1
验证错误)+100
System.Data.Entity.Internal.Validation.TypeValidator.Validate(EntityValidationContext
entityValidationContext,InternalPropertyEntry属性)+69
System.Data.Entity.Internal.Validation.EntityValidator.Validate(EntityValidationContext
entityValidationContext)+17
System.Data.Entity.Internal.InternalEntityEntry.GetValidationResult(IDictionary
项目)+193
System.Data.Entity.DbContext.ValidateEntity(DbEntityEntry entityEntry,IDictionary
2项)+40
System.Data.Entity.DbContext.GetValidationErrors()+210
System.Data.Entity.Internal.InternalContext.SaveChanges()+44
System.Data.Entity.Internal.LazyInternalContext.SaveChanges()+33
System.Data.Entity.DbContext.SaveChanges()+20
D:\Projects\visualstudio 2010\Projects\hayatdestek\hayatdestek\Ramazan\Testler.cs:102中的Ramazan.TestIslem.yayinDegistir(Int32 id)
D:\Projects\visualstudio中的hayatdestek.Controllers.YonetimController.YayinDegistir(int32id)
2010\Projects\hayatdestek\hayatdestek\Controllers\YonetimController.cs:180
lambda_方法(闭包、控制器基、对象[])+97
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase控制器,对象[]参数)+14
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext
controllerContext,IDictionary
2个参数)+182 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor ActionDescriptor,IDictionary
2
参数)+27
System.Web.Mvc.Async.c__DisplayClass42.b__41()
+28
System.Web.Mvc.Async.c__显示类8
1.b__7(IAsyncResult ) +10 System.Web.Mvc.Async.WrappedAsyncResult
1.End()+50
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult
异步结果)+32
System.Web.Mvc.Async.c__显示类39.b__33()
+58
System.Web.Mvc.Async.c__显示类4f.b__49()
+225
System.Web.Mvc.Async.c__显示类37.b__36(IAsyncResult asyncResult)+10
System.Web.Mvc.Async.WrappedAsyncResult
1.End()+50 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult 结果)+34 System.Web.Mvc.Async.c_DisplayClass2a.b_20() +24 System.Web.Mvc.Async.c_DisplayClass25.b_22(IAsyncResult 结果)+99 System.Web.Mvc.Async.WrappedAsyncResult
1.End()+50
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult
结果)+27
System.Web.Mvc.c__;u displayClassId.b_;u 18(IAsyncResult
结果)+14
System.Web.Mvc.Async.c\uuu DisplayClass4.b\uu 3(IAsyncResult
ar)+23
System.Web.Mvc.Async.WrappedAsyncResult
1.End()+55 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)+39 System.Web.Mvc.Async.c_DisplayClass4.b_3(IAsyncResult ar)+23 System.Web.Mvc.Async.WrappedAsyncResult
1.End()+55
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)+29
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult
结果)+10
System.Web.Mvc.c_uuudisplayClassB.b_uuu4(IAsyncResult
结果)+25
System.Web.Mvc.Async.c\uuu DisplayClass4.b\uu 3(IAsyncResult
ar)+23
System.Web.Mvc.Async.WrappedAsyncResult
1.End()+55 System.Web.Mvc.c_DisplayClasse.b_d()+31 System.Web.Mvc.SecurityUtil.b_0(操作f)+7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(操作)+23 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)+59 System.Web.Mvc.MvcHandler.System.Web.IHTTPassynchandler.EndProcessRequest(IAsyncResult 结果)+9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9629296 System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)+155

来自@Pawel的答案


此异常似乎源自[EnumDataType(typeof(int)), ErrorMessage=“{0}mutlaka sayıolmalıdır!”)]类型应该在哪里显示 枚举类型,而不是简单类型。请尝试将此属性删除到 测试工作。注意:EF不使用EnumDataType属性 这个问题可能和EF无关

您的堆栈跟踪:

[InvalidOperationException:类型'System.Int32'需要表示 枚举类型。]
System.ComponentModel.DataAnnotations.EnumDataTypeAttribute.IsVali
[InvalidOperationException: The type 'System.Int32' needs to represent an enumeration type.]
   System.ComponentModel.DataAnnotations.EnumDataTypeAttribute.IsValid(Object
[DbUnexpectedValidationException: An unexpected exception was thrown during validation of 'Test Süresi (saniye) (0 süresiz)' when
[EnumDataType(typeof(int), ErrorMessage = "{0} mutlaka sayı olmalıdır!")]