我刚刚开始学习实体框架,并且对ORM没有多少经验。
在我的小应用程序中,我有一个表,这个sql server表有几列,包括PrimaryKey(int)a Name(字符串)和Flag(tinyint)。
当我将此表导入其中时,会自动将Flags的数据类型指定为字节。这很好,但Flag应该是一个布尔值,所以我
然后我收到了这个错误:
错误2019:指定了成员映射 无效。类型 'Edm.Boolean [可空=真,默认值=' 成员'MyFlag'的类型 'MyModel.MyItem'不兼容 同 'SqlServer.tinyint [可空=真,默认值=' 成员'MyFlag'的类型 'MyModel.Store.MyItem'。
有没有办法
MyItem item = new MyItem();
item.Flag = true;
并在数据库中将Flag保存为1?
答案 0 :(得分:18)
您可以在数据库中将MyFlag
的数据类型更改为 bit
。
答案 1 :(得分:3)
我认为对于tinyint
,您必须创建一个分部类,并使用适当读/写该字段的单独字段。但是,该框架会将bit
字段正确解释为boolean
。
您可以尝试使用以下内容作为部分内容..
public partial class MyItem
{
public bool FlagBool
{
get { return Flag == 1; }
set { Flag = value ? 1 : 0; }
}
}