Utilizzo di "Id" come chiave primaria nel campo verde Dapper Contrib MVC 5 sito

0

Sto creando un nuovo sito e lo baserò su ASP.NET MVC 5 e amp; Contributo Dapper. Voglio andare all in con tutte queste tecnologie - e ottenere sempre il risparmio / convenzione sulla configurazione / i vantaggi del codice tergente disponibili.

Sto progettando il database in SQL Server 2014. Storicamente ho sempre chiamato le chiavi primarie TableId piuttosto che "Id".

CREATE TABLE User (
    UserId int IDENTITY(1,1) NOT NULL,
    Username VARCHAR(50),
    FirstName VARCHAR(50),
    LastName VARCHAR(50)
)

Piuttosto che ...

CREATE TABLE User (
    Id int IDENTITY(1,1) NOT NULL,
    Username VARCHAR(50),
    FirstName VARCHAR(50),
    LastName VARCHAR(50)
)

Questo evita ambiguità in alcuni SQL - ed evita di unire campi chiave primari a chiavi esterne con un nome diverso. Buono per chiarezza.

Tuttavia - e penso che Ruby on Rails Active Record abbia iniziato questo - ORM come Dapper Contrib richiedono meno configurazione se l'Id di una tabella / modello è chiamato "Id". Per me questa è un'indicazione delle migliori pratiche e deve essere incoraggiata.

Questo è il contributo di Dapper che ha un'opinione e raccomanda una buona pratica.

Dopo aver detto che pochissimi siti o codici di esempio ho trovato (oltre la documentazione dapper) - usando Dapper o meno - usa "Id" - la maggior parte usa "TableID".

Ci sono vantaggi oltre a non dover aggiungere l'attributo [Key] alla proprietà "TableID" di un modello per farlo mappare - e qual è la "best practice" quando si effettua lo sviluppo di campi verdi?

Sì, questa domanda è stata posta molte volte - ma non con una relazione diretta con gli ORM - e non specificamente su ASP.NET MVC 5 & Contributo Dapper. Questi sono nuovi (ish) fattori.

Oppure sto solo fustigando un cavallo morto qui - è una preferenza puramente personale e non così importante - anche quando gli ORM sono presi in considerazione?

    
posta niico 27.05.2016 - 14:52
fonte

1 risposta

1

Il tuo DBMS si preoccupa di quale convenzione di denominazione usi?

  • No

Ti importa?

  • Probabilmente lo fai, proprio come farebbe qualsiasi altro umano. Tutti hanno una preferenza.

I tuoi colleghi si preoccupano?

  • Sì? Consulta con loro.

Ti interessa il tuo ORM?

  • Dovresti essere in grado di rispondere a questo da solo. Non ho familiarità con Dapper ma ho esperienza con Entity Framework, NHibernate ed Eloquent e trovo ridicolo che ORM imponga una convenzione di denominazione.

Ha mai senso denominare una chiave primaria TableNameId invece di Id ?

  • Non nella mia esperienza. Se esegui query SQL non elaborate e sei preoccupato per i problemi relativi ai join, devi utilizzare gli alias . In effetti, trovo più appropriato denominare le chiavi primarie Id poiché in questo modo sono costretto a fare pratica con gli alias!

Per me, User.UserId non ha senso. Io nomino sempre le mie chiavi primarie Id .

Gli unici fattori in questa decisione dovrebbero essere le preferenze tue e dei tuoi colleghi.

Se c'è qualcosa che ho perso probabilmente lo troverai in questo popolare dibattito sacro .

    
risposta data 27.05.2016 - 16:39
fonte

Leggi altre domande sui tag