2016-11-30 54 views
0

我有一个应用程序使用EntityFramework Code First创建数据库(如果它不存在)。并且我使用MySQL作为数据库引擎。使用实体框架CodeFirst在MySQL中创建VARCHAR BINARY列

我有一个表格,其中一个关键列需要区分大小写。我不想使用排序规则将整个数据库或表格标记为区分大小写,因此最好的方法是(将我所知)标记为BINARY

有谁知道如何使用Code First做到这一点?我试着这样做:

[Column(TypeName = "varchar(100) BINARY")] 

,但它不喜欢的是,我第一次访问DB型我得到

“System.InvalidOperationException”类型的异常出现在EntityFramework.dll但在用户代码中没有处理

附加信息:序列中没有匹配的元素

也许我应该做一个数据库创建后ALTER TABLE

回答

1

我不想使用归类标记整个数据库或表区分大小写

哦,不,那是没有意义的,但你应该能够做到这一点在列,使用适当的归类,如:

VARCHAR(100) COLLATE utf8_bin 

或者只是......

VARBINARY(100) 

.. 。在MySQL中完全有效(尽管我不知道EF是否能正确处理它)。

http://dev.mysql.com/doc/refman/5.7/en/binary-varbinary.html

+0

我实际上已经试过这我张贴的问题后,遗憾的是它并不在我的情况下工作,因为我需要的EF属性为一个字符串,但此列类型只与字节兼容[] –

+0

好,如果它是二进制的,那么它不是一个字符串 - 它是字节 - 所以这部分在强类型环境中是有意义的。那么'VARCHAR(100)COLLATE utf8_bin'呢?这应该是一个区分大小写的字符串。 –

+0

这工作正常,如果我手动创建表,但林寻找一种方式来使用EntityFramework –