C# 使用Entity Framework Codefirst在MySQL中创建VARCHAR二进制列
我有一个应用程序,它首先使用EntityFramework代码来创建数据库(如果数据库不存在)。我使用MySQL作为数据库引擎 我有一个表,其中一个关键列需要区分大小写。我不想使用排序规则将整个数据库或表标记为区分大小写,因此(据我所知)最好的方法是将列标记为二进制 有人知道如何首先使用代码来实现这一点吗?我试着做: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
[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不是一个非常常见的要求。”