当前位置: 首页 > 面试题库 >

带有mysql的实体框架,Linux和Windows之间的表大小写问题

史骏
2023-03-14
问题内容

我们目前正在使用Code First Entity
Framework和Mysql开发产品。开发数据库托管在Windows环境中,而生产mysql在Linux上。

我遇到的问题是mysql中的表是这样命名的:

 mydatabase.industry
 mydatabase.account
 ...

实体框架创建如下查询:

  Select * FROM mydatabase.Industry;

注意大写字母。这在Windows上的mysql上工作正常,但是在Linux上我收到此错误:

  Table 'mydatabase.Industry' doesn't exist

有任何想法吗?


问题答案:

实体框架将使用与为对象声明的名称相同的名称(大写字母等)。因此,例如,如果您将模型对象声明为:

public class Industry
{
  public int IndustryID { get; set; }
}

实体框架将查找带有IndustryID列的Industry表。

您可以通过在模型中添加注释来更改此设置。请执行下列操作:

[Table("industry")]
public class Industry
{
  public int IndustryID { get; set; }
}

这样,您的对象仍将使用适当的.NET命名方案,但它将与您的相应数据库匹配。您还可以使用ColumnAttribute更改名称。

另外,您可以在MySQL中更改表名。



 类似资料:
  • 我必须将昨天添加的一位同事的迁移应用到我的本地数据库: 问题是我的表中已经有数据并且迁移失败: 有什么方法可以避免这种冲突,而不必清除< code>Document表中的所有数据?

  • 问题内容: 我尝试通过使用实体框架连接MySql数据库,但Visual Studio不想生成* .edmx? 我在db中有1个表, -选择ado.net edm,- 选择从数据库生成 -选择 db-在这里我认为我应该选择表,但是 向导关闭 我尝试使用其他版本的EF,但是仍然无法正常工作。问题是什么? 我的软件: -Windows 7 * 64 -vs 2017社区 -mySql 8.0社区 问题答

  • 我有一个表存储3K条记录, 我对实体框架和ORM是个新手,但我能理解出了问题。 运行此linq查询时: 我在mysql端得到以下查询: 执行此查询大约需要3.50秒。 说明此查询: 当我查询: 我只有0.01秒... 跑着再解释一遍我得到: 我不明白为什么会这样。 Entity Framework 4.3 MySQL Connector Net 6.5.4.0 tcms_articles: 那么为

  • 问题内容: 我有一个侦听端口的小型TCP服务器。在调试时,我通常会CTRL-C服务器以终止进程。 在Windows上,我可以快速重新启动服务,并且套接字可以重新启动。在Linux上,我必须等待几分钟,然后bind()成功返回 当bind()失败时,它返回errno = 98,正在使用的地址。 我想更好地了解实现之间的差异。Windows肯定对开发人员更友好,但是我有点怀疑Linux在做“错误的事情

  • 问题内容: 我有一个PHP代码库,用于混合环境下处理我们的MySQL表。例如,。 我们的代码也可以在Windows上运行,并且在不了解之前,我们已经将多个数据库导入到Windows服务器上。这导致Windows MySQL将所有表名更改为小写。()。现在,我们知道如何防止这种情况发生在新数据库中。()并且,代码在Windows服务器上运行良好,因为MySQL根本不在乎Windows上表的大小写。

  • 问题内容: 像其他几个人一样,我在序列化Entity Framework对象时遇到问题,因此我可以通过JSON格式的AJAX发送数据。 我有以下服务器端方法,我正在尝试通过jQuery使用AJAX进行调用 通过AJAX调用会导致此错误: 这是因为实体框架创建循环引用以保持所有对象相关并且可访问服务器端的方式。 我从(http://hellowebapps.com/2010-09-26/produc