Saya menggunakan EF Core Power Tools untuk menghasilkan model saya dengan memilih EF Core Power Tools -> Reverse Enegineer dalam Visual Studio .Net.

Saya masih menggunakan EF Core 2.x, jadi saya menghapus tanda centang dari dialog pertama di mana Anda dapat memilih untuk menggunakan EF Core 3.x.

Dalam dialog opsi terakhir saya pilih:

  • Gunakan atribut DataAnnotation untuk mengonfigurasi model.
  • Kustomisasi kode menggunakan template Handlebars (C#).

Saya menggunakan SQL Server untuk database saya.

Masalah saya adalah model yang dihasilkan berbeda ketika saya menjalankan alat di database lokal saya dibandingkan dengan versi database di server lain.

Perbedaannya ada pada kelas POCO yang dihasilkan. Di database lokal saya, kelas berikut dibuat:

public partial class ExampleTable
{
    [Key]
    public byte Id { get; set; }
    public string Tekst { get; set; }
} 

Ketika saya menjalankan alat tersebut terhadap database lain, kodenya terlihat seperti ini:

[Table("ExampleTable", Schema = "dbo")]
public partial class ExampleTable
{
    [Key]
    public byte Id { get; set; }
    public string Tekst { get; set; }
}

Mengapa alat menghasilkan model dengan atribut pada tabel dbo pada satu database dan tanpa atribut pada database lain?

1
Brian B. 9 Juli 2020, 15:46

1 menjawab

Jawaban Terbaik

Seperti yang dikatakan @Karan, ini karena pengguna yang digunakan untuk perancah tidak memiliki dbo sebagai skema default.

Lihat https://github .com/dotnet/efcore/blob/master/src/EFCore.Design/Scaffolding/Internal/CSharpEntityTypeGenerator.cs#L174

1
ErikEJ 10 Juli 2020, 05:25