映射到名称中包含符号的列

时间:2016-06-17 18:18:13

标签: c# mysql

我有一个数据库用于列名称看起来像这样的记录

  

TexasBexarCountyMisdemeanorPublicRecordId [int] IDENTITY(1,1)NOT NULL,

     

CASE-CAUSE-NBR nvarchar NULL,

     

FULL-NAME nvarchar NULL,

我正在尝试创建一个映射到此表的C#对象但是我不能使用" - "符号,因为代码不喜欢它。这个问题有方法解决吗?表具有这些列的原因是因为它是从大型政府数据库导入的。我应该创建另一个没有这些" - "在标题?然后在导入阶段映射列?

我的目标是创建一个C#对象,可以使用" - "映射到列名。在它的象征。

public class TexasBexarCountyMisdemeanorPublicRecord : Entity
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public int TexasBexarCountyMisdemeanorPublicRecordId { get; set; }

    public string CASE-CAUSE-NBR { get; set; }

    public string FULL-NAME { get; set; }
}

在上面的C#代码中,属性不起作用,因为" - "符号

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用“列名”属性覆盖,使用属性名称与数据库中的列名相同。

在您的情况下,这将是:

[Column("CASE-CAUSE-NBR")] 
public string CaseCauseNumber { get; set; }

请注意,使用Fluent API也可以这样做:

modelBuilder.Entity<TexasBexarCountyMisdemeanorPublicRecord>() 
    .Property(t => t.CaseCauseNumber ) 
    .HasColumnName("CASE-CAUSE-NBR");

答案 1 :(得分:0)

在mysql中你可以使用backtics

`TexasBexarCountyMisdemeanorPublicRecordId` [int] IDENTITY(1,1) NOT NULL,

`CASE-CAUSE-NBR` nvarchar NULL,

`FULL-NAME`  nvarchar NULL,

这应该将减号映射到sql引擎