我有一个数据库列“wantsreply”,它在逻辑上包含一个布尔值(位),但不幸的是它被实现为一个整数。任何非零值表示“是”,零表示“否”。
如果我写
class Entry { [Column] public int WantsReply {get; set;} }
在我的模型中,并使用将其映射到视图中的复选框
Html.CheckBox( "WantsReply", View.Model.WantsReply )
然后我在提交视图时会得到一个转换错误。另一方面,如果我写
[Column] public bool WantsReply {get; set;}
然后视图提交工作正常,但是当我运行一个类似
from entry in Entries select entry;
如何解决这个阻抗不匹配问题,以便查询和提交都能工作?
与其更改列属性的类型,不如将其映射到新属性?
public partial class Entry { public bool WantsReplyAsBool { get { return WantsReply != 0; } set { if (value) { WantsReply = 1; } else { WantsReply = 0; } } } }
如果愿意,integer属性可以是私有的。在视图中使用bool属性。