Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SubSonic 3 dan MySQL, menghapus garis bawah dari nama kolom dalam metode CleanUp() menyebabkan pengecualian saat menggunakan properti di linq-query

Selama berbulan-bulan ini adalah masalah bagi saya dan saya hanya menghindari garis bawah ketika bekerja dengan SubSonic pada DB apa pun yang didukung. Sampai kemarin ketika saya harus mendukung proyek warisan yang memiliki garis bawah di database SQL Server-nya.

Anda harus memperbaikinya dalam kode sumber SubSonic.Core (file:SubSonic.Core\Schema\DatabaseTable.cs):

Temukan metode ini:

public IColumn GetColumnByPropertyName(string PropertyName)
{
    return Columns.SingleOrDefault(x => x.Name.Equals(PropertyName, StringComparison.InvariantCultureIgnoreCase));
}

Dan ubah menjadi:

public IColumn GetColumnByPropertyName(string PropertyName)
{
    return Columns.SingleOrDefault(x => x.PropertyName.Equals(PropertyName, StringComparison.InvariantCultureIgnoreCase));
}

Selanjutnya Anda harus memodifikasi Structs.tt :

Temukan ini di dekat bagian atas:

Columns.Add(new DatabaseColumn("<#=col.Name#>", this)
{
    IsPrimaryKey = <#=col.IsPK.ToString().ToLower()#>,
    DataType = DbType.<#=col.DbType.ToString()#>,
    IsNullable = <#=col.IsNullable.ToString().ToLower()#>,
    AutoIncrement = <#=col.AutoIncrement.ToString().ToLower()#>,
    IsForeignKey = <#=col.IsForeignKey.ToString().ToLower()#>,
    MaxLength = <#=col.MaxLength#>
});

Dan tambahkan baris ini:

    PropertyName = "<#=col.CleanName#>",

Sehingga menjadi:

Columns.Add(new DatabaseColumn("<#=col.Name#>", this)
{
    PropertyName = "<#=col.CleanName#>",
    IsPrimaryKey = <#=col.IsPK.ToString().ToLower()#>,
    DataType = DbType.<#=col.DbType.ToString()#>,
    IsNullable = <#=col.IsNullable.ToString().ToLower()#>,
    AutoIncrement = <#=col.AutoIncrement.ToString().ToLower()#>,
    IsForeignKey = <#=col.IsForeignKey.ToString().ToLower()#>,
    MaxLength = <#=col.MaxLength#>
});

Masalahnya adalah setelah Anda membersihkan nama kolom, SubSonic mencoba menemukan kolom yang valid dalam kueri Anda dengan mencocokkan nama properti yang dihasilkan SubSonic. terhadap nama kolom asli database .

Perubahan ini akan memastikan bahwa SubSonic mencocokkannya dengan nama properti . yang telah dibersihkan .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Alat diagram ER open source untuk mysql

  2. Kueri relevansi mentah di Laravel. Bagaimana menanganinya?

  3. Saya ingin memeriksa apakah ada catatan dan jika tidak ada maka saya ingin memasukkan catatan itu ke database menggunakan golang

  4. Skrip Bash untuk memasukkan nilai di MySQL

  5. Butuh bantuan untuk mengakses database mysql menggunakan node.js