我们目前正在开发一个使用 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 命名方案,但它将与相应的数据库匹配。您还可以使用以下命令更改列的名称列属性 http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.columnattribute.aspx.
或者,您可以更改 MySQL 中的表名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)