Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Entity Framework Codefirst在MySQL中创建VARCHAR二进制列_C#_Mysql_Entity Framework_Ef Code First - Fatal编程技术网

C# 使用Entity Framework Codefirst在MySQL中创建VARCHAR二进制列

C# 使用Entity Framework Codefirst在MySQL中创建VARCHAR二进制列,c#,mysql,entity-framework,ef-code-first,C#,Mysql,Entity Framework,Ef Code First,我有一个应用程序,它首先使用EntityFramework代码来创建数据库(如果数据库不存在)。我使用MySQL作为数据库引擎 我有一个表,其中一个关键列需要区分大小写。我不想使用排序规则将整个数据库或表标记为区分大小写,因此(据我所知)最好的方法是将列标记为二进制 有人知道如何首先使用代码来实现这一点吗?我试着做: [Column(TypeName = "varchar(100) BINARY")] 但它不是这样的,当我第一次访问DB模型时 EntityFramework

我有一个应用程序,它首先使用EntityFramework代码来创建数据库(如果数据库不存在)。我使用MySQL作为数据库引擎

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

有人知道如何首先使用代码来实现这一点吗?我试着做:

[Column(TypeName = "varchar(100) BINARY")]
但它不是这样的,当我第一次访问DB模型时

EntityFramework.dll中发生“System.InvalidOperationException”类型的异常,但未在用户代码中处理

附加信息:序列不包含匹配元素

也许我应该在数据库创建后做一个更改表

我不想使用排序规则将整个数据库或表标记为区分大小写

嗯,不,这没有意义,但您应该能够使用适当的排序规则在列上执行此操作,例如:

VARCHAR(100) COLLATE utf8_bin
或者只是

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


在我发布问题后,我实际上已经尝试过这个方法,但不幸的是,在我的例子中,它不起作用,因为我需要EF属性是字符串,但此列类型仅与byte[]兼容。如果它是二进制的,那么它就不是字符串,而是字节,所以在强类型环境中,这部分是有意义的。那么
VARCHAR(100)校对utf8\u-bin
呢?这应该是一个区分大小写的字符串。如果我手动创建表,这很好,但是我正在寻找一种使用EntityFramework的方法可能--“你不能”--随机google find:可能适用,也可能不适用。从我作为DBA的角度来看,ORM通常非常擅长使简单的事情变得困难或不可能。“这不是一个非常常见的要求”这一概念让我觉得相当可笑,有点像说“
VARCHAR
的长度不是255不是一个非常常见的要求。”