Option to always prefix table names with schema?
The default behavior when creating a database connection is to prefix table names with the schema only if a conflict occurs--that is, there are two same-named tables in different schemas.
Is there an option to always prefix table names with the schema? This would be beneficial for several reasons:
- The T-SQL convention in queries is to always prefix with the schema when a non-dbo schema exists.
customer.Discounts
,vendor.InterestRates
,customer.Addresses
- Consistently prefixing tables reduces cognitive load.
customer_Discounts
,vendor_InterestRates
,Addresses
<== customer or vendor addresses? - Schemas often provide domain and business context
If I haven't just missed an existing option, from the outside, this seems like a reasonable feature to implement since there's already a condition for prefixing. I'm hoping it would be as easy as "if hasConflict or alwaysPrefix then ..."
Comments
-
Another reason to allow always prefixing table names is if the source schema changes. This happened to me today. A few tables that previously had conflicts no longer did--or maybe on connection refresh they were chosen as the "primary" table. Either way, my code was broken because the table names had changed from prefixed to non-prefixed.
-
Understood. I've added this option to LINQPad 8.8.4. It's available in both the LINQ-to-SQL and EF Core drivers. Let me know how you get along.
-
Outstanding! I'll install the 8.8.4 beta next week and report back within two weeks.
-
I've been using the latest beta with "always use schemas" checked and so far it's working perfectly. Thank you, this feature has brought another piece of joy to my LINQPad experience!