AFr*_*eze 7 mysql sql entity-framework
我们目前正在使用Code First Entity Framework和Mysql开发产品.开发数据库托管在Windows环境中,而生产mysql在Linux上.
我遇到的问题是mysql中的表命名如下:
mydatabase.industry
mydatabase.account
...
Run Code Online (Sandbox Code Playgroud)
实体框架创建一个这样的查询:
Select * FROM mydatabase.Industry;
Run Code Online (Sandbox Code Playgroud)
注意大写字母.这适用于Windows中的mysql,但在Linux上我收到此错误:
Table 'mydatabase.Industry' doesn't exist
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Jas*_*Cav 10
实体框架将使用与为对象声明的相同名称(大小写等).因此,例如,如果将模型对象声明为:
public class Industry
{
public int IndustryID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
实体框架将查找具有IndustryID列的Industry表.
您可以通过向模型添加注释来更改此设置.请执行下列操作:
[Table("industry")]
public class Industry
{
public int IndustryID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
通过这样做,您的对象仍将使用适当的.NET命名方案,但它将匹配您的相应数据库.您还可以使用ColumnAttribute更改colunns的名称.
或者,您可以更改MySQL中的表名.
小智 5
使用 EF6 :
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Types().Configure(entity => entity.ToTable(entity.ClrType.Name.ToLower()));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5378 次 |
| 最近记录: |