ScriptIgnore导致其他属性,例如StringLength被忽略

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ScriptIgnore导致其他属性,例如StringLength被忽略相关的知识,希望对你有一定的参考价值。

我有一些继承自Base类的类。

public abstract class Test {    
[StringLength(16)]
public string Test {get; set;}
}

上面的代码创建了一个maxLength为16的迁移。

AddColumn("dbo.Test", "Test", c => c.String(maxLength: 16, unicode: false));

到目前为止一切都还可以。

但是,当我为Test属性添加[ScriptIgnore]属性时,

public abstract class Test {    
[StringLength(16)]
[ScriptIgnore]
public string Test {get; set;}
}

然后它创建下面的迁移,maxLength是8000:

AddColumn("dbo.Test", "Test", c => c.String(maxLength: 8000, unicode: false));

在我看来,[ScriptIgnore]压倒所有其他属性,这是奇怪的。

当我创建一个空的MVC项目时,我无法复制该问题。我相信我的项目有问题。它能是什么?

答案

我不知道内部会发生什么事情才能实现,但我可以建议一个好的解决方案。

Use DTO's

创建一个专门用作数据传输对象的Test类。在这个类上,您可以删除属性,添加属性而无需执行[NotMapped]属性并添加[ScriptIgnore]并使其工作。

以上是关于ScriptIgnore导致其他属性,例如StringLength被忽略的主要内容,如果未能解决你的问题,请参考以下文章

有没有一种方法可以使JavaScriptSerializer忽略某些通用类型的属性?

1介绍

为啥动画自定义 CALayer 属性会导致其他属性在动画期间为零?

具有额外属性的子类构造函数

duilib 修复padding属性导致其他控件自动计算宽高度错误的bug和导致自己宽高度错误的bug

JavaWeb:标签