In Entity Framework, set the model attribute to boolean.

entity-framework

Question

I am just starting to learn a bit about the entity framework and don't have much experience with ORM's.

In my little app I have one table, this sql server table has several columns including a PrimaryKey (int) a Name (string) and a Flag (tinyint).

When I imported this table into it automatically assigned the Flags' datatype as a byte. This is fine, but the Flag should really be a boolean, so I

  1. Clicked on the Mapping Details
  2. Selected my Flag property
  3. Changed the Type from Byte to Boolean
  4. Rebuilt the application

I then got this error:

Error 2019: Member Mapping specified is not valid. The type 'Edm.Boolean[Nullable=True,DefaultValue=]' of member 'MyFlag' in type 'MyModel.MyItem' is not compatible with 'SqlServer.tinyint[Nullable=True,DefaultValue=]' of member 'MyFlag' in type 'MyModel.Store.MyItem'.

Is there a way to have

MyItem item = new MyItem();
item.Flag = true;

and have Flag save to 1 in the database?

1
16
9/18/2009 6:05:30 PM

Accepted Answer

You could change the datatype of MyFlag to bit in the database.

18
10/9/2017 10:41:31 AM

Popular Answer

I think for the tinyint you will have to make a partial class and use a separate field that appropriately read/writes to that field. However the framework will correctly interpret bit fields as boolean.

You could try something like below as the partial..

public partial class MyItem
{
    public bool FlagBool
    {
        get { return Flag == 1; }
        set { Flag = value ? 1 : 0; }
    }
}


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow